我们可以使用NULL值的赋值从列表中删除元素:
someList<-list(1,2,3)
someList[2]<-NULL
对于数据帧列,同样可能,因为它是列表对象:
someDf<-data.frame(a=1:4,b=2:5)
someDf$a<-NULL
是否可以对数据帧或矩阵行执行相同的操作? (我正在寻找一些消除行的快速方法,由于我的算法太本质,我无法向量化,其中有意义的部分包括行删除,我无法复制数据,因为它的大小也是如此)
最佳答案 将NULL分配给列表的元素时,它会删除该元素.此行为扩展到数据框,因为数据框存储为列列表.
作为列列表存储也会使行删除和创建变得昂贵.必须依次修改每列.事实上,没有办法修改数据框以删除行.您必须创建一个缺少不需要的行的新数据框并将其分配给原始变量.
矩阵会产生类似的问题,但对于行和列都是如此.矩阵存储为一对维度和单个数据向量.要再次删除行或列,必须通过提取所需的剩余行或列来创建新矩阵.
矩阵将保存您的数据,意味着行都是相同的模式.也许您可以创建包含数据的行列表,并删除那些您不想要的列表元素(通过指定NULL),然后在完成后创建数据框.