我有一个包含各种列数和行数的大数据框。我会在数据框中搜索给定向量的值,并删除与该给定向量的值匹配的单元格行。我想把它作为一个函数,因为我必须在可变行和列的多个数据帧上运行它,我想避免 for
循环。
例如
ff<-structure(list(j.1 = 1:13, j.2 = 2:14, j.3 = 3:15), .Names = c("j.1","j.2", "j.3"), row.names = c(NA, -13L), class = "data.frame")
删除所有包含值 8,9,10
的单元格的行
我想我可以使用 ff[ !ff[,1] %in% c(8, 9, 10), ]
或 subset(ff, !ff[,1] %in% c(8,9,10) )
但为了从数据集中删除所有值,我必须解析每一列(可能使用 for
循环,这是我希望避免的)。
还有其他(更清洁)的方法吗?
非常感谢
最佳答案
对每一行应用
你的测试:
keeps <- apply(ff, 1, function(x) !any(x %in% 8:10))
给出一个 bool 向量。然后用它子集:
ff[keeps,]
j.1 j.2 j.3
1 1 2 3
2 2 3 4
3 3 4 5
4 4 5 6
5 5 6 7
11 11 12 13
12 12 13 14
13 13 14 15
>
关于删除单元格与给定向量匹配的数据框行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11004203/