dplyr:行方式变异为NA时出错

dplyr:行方式变异为NA时出错,r,dplyr,na,R,Dplyr,Na,我在dplyr中的行方式mutate中遇到了奇怪的错误。以下是一个例子: set.seed(1) df <- data.frame(a = rnorm(5), b = rnorm(5)) df[2,'b'] <- NA 现在,我们可以在第一列中尝试NA: df <- data.frame(a = rnorm(5), b = rnorm(5)) df[2,'a'] <- NA mutate(rowwise(df), sum(a, b, na.rm = T)) # wor

我在
dplyr
中的行方式
mutate
中遇到了奇怪的错误。以下是一个例子:

set.seed(1)
df <- data.frame(a = rnorm(5), b = rnorm(5))
df[2,'b'] <- NA
现在,我们可以在第一列中尝试
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)

谢谢

您的错误是调用的
mean
median
不正确

虽然
sum
可以接受任意数量的参数,只需将它们全部相加,
mean
median
只接受一个
x
参数以获取参数的平均值/中位数

就像如果
a
b
是向量,你想要组合向量的平均值,你会使用
mean(c(a,b))
而不是
mean(a,b)
,你在这里也这样做:

mutate(rowwise(df), mean=mean(c(a, b), na.rm = T), med=median(c(a, b), na.rm=T))

(旁注:您一次只计算两个值的平均值和中位数,因此平均值等于中位数…

您的错误是调用的
平均值和
中位数不正确

虽然
sum
可以接受任意数量的参数,只需将它们全部相加,
mean
median
只接受一个
x
参数以获取参数的平均值/中位数

就像如果
a
b
是向量,你想要组合向量的平均值,你会使用
mean(c(a,b))
而不是
mean(a,b)
,你在这里也这样做:

mutate(rowwise(df), mean=mean(c(a, b), na.rm = T), med=median(c(a, b), na.rm=T))
(旁注:您在这里一次只计算两个值的平均值和中位数,因此平均值等于中位数…

Try
df%>%rowwise()%%>%mutate(mean=mean(c(a,b),na.rm=TRUE))
Try
df%>%rowwise()%%mutate(mean=mean(c(a,b),na.rm=TRUE))
mutate(rowwise(df), mean=mean(c(a, b), na.rm = T), med=median(c(a, b), na.rm=T))