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