另一个基本问题,但我似乎找不到解决方案。
以mtcars为例。 我想知道行数,其中 vs AND am 高于 0.5。 和
df<- mtcars
x <- subset(mtcars, (vs > 0.5) & (am > 0.5))
或
df<- mtcars
x <- subset(mtcars, (vs > 0.5) | (am > 0.5))
到目前为止很容易。
现在,我想确切地改变要用于筛选的列。我想要的列名包含在另一个数据帧中。如何进行过滤?我该怎么做才能将列名与 OR 或 AND 进行比较 - 即比较所有列行对或列行对。
df<- mtcars
colnames <- c("vs","am")
x <- subset(mtcars, mtcars[,colnames] > 0.5)
没有给出正确的答案... 感谢您的帮助!
不是使用基本 R 的最聪明的解决方案,但我希望你理解的方式:
mtcars[apply(mtcars[,colnames] > 0.5,1,function(x){ifelse(TRUE %in% x, TRUE, FALSE)}),]