通过分配NULL值从数据框中删除行

时间:2014-06-15 21:50:18

标签: r null dataframe

我们可以使用NULL值的赋值从列表中删除元素:

someList<-list(1,2,3)
someList[2]<-NULL

对于数据帧列也是如此,因为它是列表对象:

someDf<-data.frame(a=1:4,b=2:5)
someDf$a<-NULL

是否可以对数据帧或矩阵行执行相同的操作? (我正在寻找一种消除行的快速方法,由于我的算法的性质太多,我无法进行矢量化,其中有意义的部分包括行删除,我也无法复制数据,因为它的大小也是如此)

1 个答案:

答案 0 :(得分:2)

NULL分配给列表的元素时,会删除该元素。此行为扩展到数据框,因为数据框存储为列列表。

作为列列表存储也会使行删除和创建变得昂贵。必须依次修改每列。事实上,没有办法修改数据框以删除行。您必须创建一个缺少不需要的行的新数据框,并将其分配给原始变量。

矩阵会产生类似的问题,但对于行和列都是如此。矩阵存储为一对维度和单个数据向量。要删除行或列,必须再次通过提取所需的剩余行或列来创建新矩阵。

矩阵将保存您的数据,意味着行都具有相同的模式。也许你可以创建一个包含数据的行列表,并删除那些你不想要的列表元素(通过分配NULL),然后在完成后创建一个数据框。