首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用sapply将na.rm添加到自定义R函数

使用sapply将na.rm添加到自定义R函数
EN

Stack Overflow用户
提问于 2015-04-21 01:36:18
回答 1查看 3.1K关注 0票数 0

我正在努力将na.rm命令添加到如下所示的数据帧上的自定义函数(只是一个百分比)中,其中每一列都是一个时间点,其中填充了各行中标识的证券的价格。此df包含相当多的NAs。下面是函数:

代码语言:javascript
复制
pctabovepx=function(x) {
  count_above_px=x>pxcutoff
  100*(sum(count_above_px)/nrow(count_above_px))
}

然后,我想在df的所有列上运行这个函数,价格数据在下面的范围内指定。在没有添加安娜命令的情况下,它什么也不返回("numeric(0)"),但是当我添加一个na.rm命令时,它返回"Error in FUN(X[1L],...):unused argument (na.rm = TRUE)“。

代码语言:javascript
复制
abovepar=sapply(master[min_range:max_range], pctabovepx)
abovepar=sapply(master[min_range:max_range], pctabovepx, na.rm=TRUE)

我还试着简化,在计算百分比之前只做一个计数。以下命令没有返回错误,而只是返回了所有不是NA的值,而不是价格高于分界值的子集。

代码语言:javascript
复制
countsabovepx=as.data.frame(sapply(master[min_range:max_range],function(x) sum(!is.na(x>pxcutoff))))

我想知道如何避免这个问题,无论是使用这个函数,还是通常使用不是均值或中位数的自编写函数。

EN

Stack Overflow用户

发布于 2015-04-21 01:48:43

您需要将其作为参数添加到函数中,并将其传递给sum。您还需要考虑对nrow部件的影响。然而,在函数的其余部分中,我希望count_above_px是一个向量,而nrow在这里没有意义。我假设你打算做length,你实际上是在计算mean,它无论如何都有na.rm参数。你可能还想看看pxcutoff,因为它没有在函数中定义--它也应该作为参数传递吗?

代码语言:javascript
复制
pctabovepx=function(x, na.rm=FALSE) {
  count_above_px=x>pxcutoff
  100*mean(count_above_px, na.rm=na.rm)
}
票数 6
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29754634

复制
相关文章

相似问题

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