我有一个数据框,我想通过挑选出符合年
因子值条件的所有行来进行子集化:
subset_df <- df[ (which(df$year < '1972') || (df$year > '1982')),]
我的问题是上面的行返回整个数据帧,df
。
如果这太基础或太简单,请原谅我,但我无法找出缺陷所在。
我怀疑有一些关于 ||
的东西我不明白,或者我的其他理论是 arr.ind=T
以某种方式发挥了作用。要么是这样,要么是 which()
函数的本质比我想象的要复杂一些。
如果有人有任何见解,我将不胜感激。感谢您抽出时间。
PS:是的,这按预期工作并返回正确的子集;即,我的数据框中没有缺陷:
test_df <- df[ (which(df$year < '1972')), ]
与 1982 年的对应版本一样。
最佳答案
请注意,您可以从帮助文件中读取(参见?"|"
):
For |, & and xor a logical or raw vector... and...For ||, && and isTRUE, a length-one logical vector.
因此,您可能希望将 ||
更改为 |
,我认为这里不需要 which
。
subset_df <- df[ df$year < '1972' | df$year > '1982',]
关于r - R 中的 bool 运算符和 which() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23303631/