希望我在这里不是非常懒惰,但我想知道是否有办法缩短这种情况
dataframe[holiday == 'Yes' & ( type == 1 | type == 2 | type == 3 ), ]
我认为这里的语法是错误的,但我要做的是向所有度假的人展示并选择1,2或3型。
答案 0 :(得分:3)
让我们说数据帧是df然后就是
df[(df$holiday == 'Yes') & (df$type %in% c(1, 2, 3)), ]
答案 1 :(得分:2)
如果holiday
和type
是data.frame
的列,则您的语法错误:[.data.frame
未在范围内评估其内容,这意味着没有意义除非holiday
和type
是全局环境中的变量。相反,我怀疑你是这个意思:
dataframe[dataframe$holiday == 'Yes' &
(dataframe$type == 1 | dataframe$type == 2 | dataframe$type = 3),]
使用%in%
更简洁,而不是使用多个OR语句:
dataframe[dataframe$holiday == 'Yes' & dataframe$type %in% 1:3,]
然而,data.table
库会评估data.table
范围内的列名,让您回到原始语法:
require(data.table)
dt <- as.data.table(data.frame)
dt[holiday == 'Yes' & type %in% 1:3,]