在R中添加两个向量或列表

时间:2015-03-28 13:35:07

标签: r

我在R中有两个列表或向量:

vector 1
     d1    d2   d3   d4
2   0.75   1   0.25   0

vector 2
[1] "1" "3"

我需要考虑vector2的值来添加向量1的值,我的意思是在我的例子中添加d1加d3的值,因为向量2具有那些索引。我正在考虑使用for循环来遍历向量2并添加vector1的值,但是不是其他更直接的方法来执行此操作?我记得它可以通过转换T,F值中的索引来使用,但坦率地说我完全不记得了。

4 个答案:

答案 0 :(得分:2)

试试这个(结果没有顺序):

bool = gsub('d','',names(vector1)) %in% vector2

c(sum(vector1[bool]), vector1[!bool])

#   d2 d4 
# 1  1  0

答案 1 :(得分:2)

尝试:

sum(vector1[match(vector2, gsub("d", "", names(vector1)))])
[1] 1

答案 2 :(得分:1)

这是%in%

的另一种方法
sum(v1[seq_along(v1) %in% v2])
# [1] 1

答案 3 :(得分:0)

在此示例中,vector2似乎是一个字符类型,其中包含您要添加的vector1位置索引的数字。在这种情况下,解决方案更容易:

> vector1 <- c(d1=0.75, d2=1, d3=0.25, d4=0)
> vector1
  d1   d2   d3   d4 
0.75 1.00 0.25 0.00 
> vector2 <- c("1", "3")
> vector2
[1] "1" "3"
> sum(vector1[as.numeric(vector2)])
[1] 1

如果您想将其概括为data.frame - 由您的&#34;向量1&#34;的布局建议。 rowname 2 > (df1 <- data.frame(d1=0:3, d2=10:13, d3=-1:2, d4=seq(.25, 1, .25))) d1 d2 d3 d4 1 0 10 -1 0.25 2 1 11 0 0.50 3 2 12 1 0.75 4 3 13 2 1.00 > apply(df1, 1, function(x) sum(x[as.numeric(vector2)])) [1] -1 1 3 5 ,然后您可以使用以下方法将其应用于每一行:

{{1}}