【发布时间】:2015-06-27 13:50:41
【问题描述】:
我正在努力将 na.rm 命令添加到下面在数据框中看到的自定义函数(只是一个百分比),其中每一列是一个时间点,其中填充了行中标识的证券价格。这个 df 包含相当多的 NA。这是函数:
pctabovepx=function(x) {
count_above_px=x>pxcutoff
100*(sum(count_above_px)/nrow(count_above_px))
}
然后我想在我的 df 的所有列上使用价格数据在 sapply 内运行此函数,如下面的范围中指定的那样。在不添加 na 命令的情况下,它不会返回任何内容(“numeric(0)”),但是当我像使用 mean 之类的函数一样添加 na.rm 命令时,它会返回“FUN 中的错误(X[[1L]], . ..) : 未使用的参数 (na.rm = TRUE)"。
abovepar=sapply(master[min_range:max_range], pctabovepx)
abovepar=sapply(master[min_range:max_range], pctabovepx, na.rm=TRUE)
我也尝试过简化,在计算百分比之前先进行计数。以下命令没有返回错误,而是返回了所有非 NA 值,而不是价格高于临界值的子集。
countsabovepx=as.data.frame(sapply(master[min_range:max_range],function(x) sum(!is.na(x>pxcutoff))))
我想知道如何避免这个问题,无论是使用这个函数还是使用非均值或中值的自写函数。
【问题讨论】:
-
我不能保证我的回答对你的情况有效,因为你没有提供样本数据。以下是关于提出 R 问题的参考:stackoverflow.com/q/5963269/1191259