首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >dplyr:与NA行向变异的错误

dplyr:与NA行向变异的错误
EN

Stack Overflow用户
提问于 2015-07-13 05:19:44
回答 1查看 1.8K关注 0票数 1

我在dplyr中的逐行dplyr中出现了一些奇怪的错误。下面是一个示例:

代码语言:javascript
运行
复制
set.seed(1)
df <- data.frame(a = rnorm(5), b = rnorm(5))
df[2,'b'] <- NA

sum没有问题,但是摘要函数是有问题的:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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)

我不确定我是不是在做错事。我认为预期的行为应该是相同的:

代码语言:javascript
运行
复制
as.data.frame(apply(df, 1, mean, na.rm = T)

谢谢!

EN

Stack Overflow用户

回答已采纳

发布于 2015-07-13 05:28:55

您的错误是不正确地调用meanmedian

sum可以接受任意数量的参数,只需将它们全部相加,而meanmedian只接受一个x参数来取平均值/中位数。

就像ab是向量,并且您想要使用mean(c(a, b))而不是mean(a,b)的组合向量的平均值一样,这里也是这样做的:

代码语言:javascript
运行
复制
mutate(rowwise(df), mean=mean(c(a, b), na.rm = T), med=median(c(a, b), na.rm=T))

(附带说明:这里一次只计算两个值的平均值和中位数,所以平均值等于中位数。)

票数 5
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31375835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档