df <- data.frame(name=c('aa', 'bb', 'cc','dd'),
code=seq(1:4), value= seq(100, 400, by=100))
df
v <- c(1, 2, 2)
v
A <- df[df$code %in% v,]$value
A
str(A)
我试图根据代码获取相应的值。我期待A
长度为3;但实际上它会返回2的向量。如果我希望A
为3的向量,即c(100,200,200)
,我该怎么办?
答案 0 :(得分:2)
%in%
返回一个逻辑向量,长度与向量1相同,表示向量1的每个元素是否出现在向量2中。
相反,对于向量1的每个元素,match
函数返回向量2中元素首次出现的位置(如果向量2中不存在,则返回NA
)。请尝试以下方法:
df[match(v, df$code), 'value']
答案 1 :(得分:0)
您可以使用v
作为参数,如果这些是您想要的“值”的行:
> df[v,]$value
[1] 100 200 200
答案 2 :(得分:0)
df[v,2] # minimum characters :)