我有一个问题,我必须从R中的数据集添加三十三个相等长度的整数向量。我知道简单的解决方案是
Vector1 + Vector2 + Vector3 +VectorN
但我确信有一种方法可以对此进行编码。还有一些向量用NA代替整数,所以我需要一种方法来跳过这些。我知道这可能是非常基本的,但我是新手。
答案 0 :(得分:7)
这是另一种方法,在对向量求和时删除NA:
df <- data.frame(vector1, vector2, vector3, vector4)
rowSums(df, na.rm=T)
答案 1 :(得分:1)
实际上它并不像看起来那么容易。我想你想要摆脱NA并用0(零)替换它们。另一个解决方案是:
# create dummy variables
set.seed(1234)
x <- round(rnorm(10, 15, 3.2))
y <- round(runif(10, 12, 27))
z <- round(rpois(n = 10, lambda = 5))
# create some NA's
x[c(2,3)] <- NA
y[c(1,3,7)] <- NA
z[c(3,6,10)] <- NA
现在,如果你这样做:
x + y + z # the result is:
[1] NA NA NA 20 31 41 NA 39 37 25
所以跑:
x[is.na(x)] <- 0
y[is.na(y)] <- 0
z[is.na(z)] <- 0
因此:
x + y + z # yields:
[1] 16 21 0 25 34 41 16 42 48 25
但是,坦率地说,我建议您坚持 @xiechao 的解决方案! 这很简单直接!
答案 2 :(得分:0)
do.call("+", list(vector1, vector2, vector3, vector4))
答案 3 :(得分:0)
mapply进入其领域:
mapply(sum,Vector1,Vector2,Vector3,VectorN,na.rm = TRUE)
简单明了
答案 4 :(得分:0)
add = function(...) {
vectors = list(...)
res=vectors[[1]]
for(i in vectors[-1]) res = res + i
return(res)
}
add(1:3,4:5,1:3)