【发布时间】:2015-07-13 05:19:44
【问题描述】:
我在dplyr 中遇到了行式mutate 的奇怪错误。这是一个例子:
set.seed(1)
df <- data.frame(a = rnorm(5), b = rnorm(5))
df[2,'b'] <- NA
sum没有问题,但是汇总函数有问题:
mutate(rowwise(df), sum(a, b, na.rm = T)) # works
mutate(rowwise(df), mean(a, b, na.rm = T))
#! Error: missing value where TRUE/FALSE needed
mutate(rowwise(df), median(a, b, na.rm = T))
#! Error: unused argument (-0.820468384118015)
现在,我们可以尝试在第一列NA:
df <- data.frame(a = rnorm(5), b = rnorm(5))
df[2,'a'] <- NA
mutate(rowwise(df), sum(a, b, na.rm = T)) # works
mutate(rowwise(df), mean(a, b, na.rm = T))
#! no error, but returns `NaN`
mutate(rowwise(df), median(a, b, na.rm = T))
#! Error: unused argument (-0.820468384118015)
我不确定我是否在这里做错了什么。我认为预期的行为应该是一样的:
as.data.frame(apply(df, 1, mean, na.rm = T)
谢谢!
【问题讨论】:
-
试试
df %>% rowwise() %>% mutate(Mean = mean(c(a,b), na.rm=TRUE))