R 将空的一组/一组NA';是NA而不是0?

R 将空的一组/一组NA';是NA而不是0?,r,sum,na,R,Sum,Na,如果应用于空集,则返回0。 如果将其应用于一组NA值,是否有一种简单的方法使其返回NA 以下是一个例子: 但我需要: name var1 var2 var3 1 A 6 10 NA 2 B 6 26 10 3 C 6 42 26 名称A,var3的和应该是NA,而不是0。 (需要明确的是,名称A、var1不应为NA,其中集合包含一个NA,但也应包含应求和的有效值)。有什么想法吗 我一直在摆弄na.action,但sum似乎不

如果应用于空集,则返回0。 如果将其应用于一组NA值,是否有一种简单的方法使其返回NA

以下是一个例子:

但我需要:

     name var1 var2 var3
1    A    6   10   NA
2    B    6   26   10
3    C    6   42   26
名称A,var3的和应该是NA,而不是0。 (需要明确的是,名称A、var1不应为NA,其中集合包含一个NA,但也应包含应求和的有效值)。有什么想法吗

我一直在摆弄na.action,但sum似乎不接受这些

你可以试试

f1 <- function(x) if(all(is.na(x))) NA_integer_ else sum(x, na.rm=TRUE)
aggregate(.~name, test, FUN=f1, na.action=NULL)


非常感谢。还是一个初学者,我没有想到要编写自己的函数来实现这一点。我以为sum会有一个参数可以帮助我。@Kastany不,这是一个独特的情况,我们必须特别提到它
     name var1 var2 var3
1    A    6   10   0
2    B    6   26   10
3    C    6   42   26
     name var1 var2 var3
1    A    6   10   NA
2    B    6   26   10
3    C    6   42   26
f1 <- function(x) if(all(is.na(x))) NA_integer_ else sum(x, na.rm=TRUE)
aggregate(.~name, test, FUN=f1, na.action=NULL)
library(dplyr)
test %>% 
   group_by(name) %>% 
   summarise_each(funs(f1))
 library(data.table)
 setDT(test)[, lapply(.SD, f1), name]