总结现有的向量并忽略丢失的向量

时间:2018-03-22 14:17:05

标签: r vector sum missing-data

我试图在函数中总结一些向量。根据我的输入,可能会创建一些向量。例如,我有向量A,B,C和D:

A <- c(1,1,1,0)
B <- c(1,0,1,1)
C <- c(0,0,0,1)

在这种情况下,D不存在。

如果向量存在,我需要编写一个代码来汇总值,并忽略不存在的向量。

输出应为A + B + C + D,忽略缺少的向量:

> A + B +C
[1] 2 1 2 2

您知道一个简单的解决方案吗?

谢谢

2 个答案:

答案 0 :(得分:0)

注意:小心使用字母名称作为变量 - D是一个函数stats::deriv,而exists("D")很可能会在您的环境中返回TRUE

我认为您使用exists

走在正确的轨道上
vA <- c(1,1,1,0)
vB <- c(1,0,1,1)
vC <- c(0,0,0,1)

vec.names <- c("vA", "vB", "vC", "vD")
Reduce("+", mget(Filter(exists, vec.names)))
# [1] 2 1 2 2

说明:从名称的字符向量开始。将该向量过滤到存在的那些对象。返回找到的mget对象的命名列表。将这些元素与我们的&#34; +&#34;相继结合起来。功能

答案 1 :(得分:0)

可能的替代方案(重命名的矢量):

AA <- c(1,1,1,0)
BB <- c(1,0,1,1)
CC <- c(0,0,0,1)

eval(parse(text = paste(intersect(ls(), c("AA", "BB", "CC", "DD")), collapse = "+")))