R-数据帧查找和is.na处理

R-数据帧查找和is.na处理,r,R,我在R中有以下两个数据帧 d1 <- data.frame(var1 = c(1,NA), var2 = c(NA, 2), var3 = c(3,3)) max <- data.frame(var1 = 10, var2 = 5, var3 = 5) > d1 var1 var2 var3 1 1 NA 3 2 NA 2 3 > max var1 var2 var3 1 10 5 5 我将从一个for

我在R中有以下两个数据帧

d1 <- data.frame(var1 = c(1,NA), var2 = c(NA, 2), var3 = c(3,3))
max <- data.frame(var1 = 10, var2 = 5, var3 = 5)

  > d1
  var1 var2 var3
1    1   NA    3
2   NA    2    3

  > max
  var1 var2 var3
1   10    5    5
我将从一个for循环开始,遍历d1中的所有行,并创建“max_sum”列

for(第1行:nrow(d1)){

d1[行,“最大和”]
max\u sum您可以使用矩阵乘法

cbind(d1,
      "max_sum" = (!is.na(d1)) %*% t(max))
#  var1 var2 var3 max_sum
#1    1   NA    3      15
#2   NA    2    3      10

如何从
1,NA,3
10,5,5
15
?它只是
10+0+5
?@r2evans谢谢。只是在没有
+
的情况下尝试了一下,这里实际上不需要它。“virtual-1”用于在名为…
sum
:-)的变量中分配
sum
的返回值…(为什么不直接执行
max\sum.)[i] @r2evans你说得对。但它解决了问题:)。不过,我喜欢这个网站,因为总是有人提供更快更准确的解决方案。它也会让我受益;)
for (row in 1:nrow(d1)) {
    d1[row, "max_sum"] <- #code
}  
max_sum <- vector()  

for(i in 1:nrow(d1)) {

   sum <- sum(max[c(!is.na(d1[i,]))])

   max_sum[i] <- sum

}

d1$max_sum <- max_sum
d1

  var1 var2 var3 max_sum
1    1   NA    3    15
2   NA    2    3    10
cbind(d1,
      "max_sum" = (!is.na(d1)) %*% t(max))
#  var1 var2 var3 max_sum
#1    1   NA    3      15
#2   NA    2    3      10