r - R 中的 bool 运算符和 which() 函数

标签 r subset

我有一个数据框,我想通过挑选出符合因子值条件的所有行来进行子集化:

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/

相关文章:

python - 如何使用递归编写 all_subsets 函数?

r - 如何在 ggplot2 中仅使用一个命令来增加点和文本的大小?

jquery - 在 rmarkdown 中包含对 jquery 的调用是否会导致包出现问题?

linux - JRI REngine eval() 方法总是返回 null

使用 'by' 和条件替换 data.table 中的行值

r - R根据多个列值将一个数据帧分割为多个数据帧

从left_join删除相同的列

r - 使用泛函代替 for 循环来识别向量中的连续变化

r - 从数据框中选择一组满足条件的列

r - 选择具有特定条件的子数据集,而不使用应用和子集函数