R下标基于向量

时间:2014-02-16 01:12:17

标签: r subscript

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),我该怎么办?

3 个答案:

答案 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 :)