使用标识符向量对特定行进行子集化 - 警告消息

Subset specific rows with vector of identifiers - warning messages

我想用标识符向量对特定行进行子集化。

这是我的数据

data = rbind(c('B11008Z', 'Men', '13'),  c('B11040Z', 'Women', '14'), c('B11040E', 'Women', '12') ) 
colnames(data) <- c('id', 'sex', 'age') 
data = as.data.frame(data)

当我一一输入个人ID时,没有问题。

data[data$id == 'B11008Z', ]
data[data$id == 'B11040Z', ]

但是,当我使用我想要的标识符创建矢量时,我收到警告消息

idSelect = c('B11008Z', 'B11040Z')
data[data$id == idSelect, ]
# or 
data[which(data$id == idSelect), ]

你能帮我理解为什么这里有问题吗?

你的命令取决于相等性,这需要一个原子数据,但你却给出了一个向量。取而代之的是,您可以使用 @davidArenburg 提到的运算符。 您可以通过首先形成 T/F 的列表,然后根据列表的相应值检索列表来完成此操作。

data$id %in% idSelect
[1] TRUE TRUE FALSE

data[data$id %in% idSelect, ]