使用标识符向量对特定行进行子集化 - 警告消息
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, ]
我想用标识符向量对特定行进行子集化。
这是我的数据
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, ]