簡體   English   中英

使用sapply將na.rm添加到Custom R Function

[英]Adding na.rm to Custom R Function with sapply

我正在努力將na.rm命令添加到下面在數據框中看到的自定義函數(僅一個百分比),其中每個列都是一個時間點,填充有在行中標識的證券價格。 此df包含很多NA。 這是函數:

pctabovepx=function(x) {
  count_above_px=x>pxcutoff
  100*(sum(count_above_px)/nrow(count_above_px))
}

然后,我想在具有價格數據的df的所有列上運行該函數,如以下范圍中所指定。 在不添加na命令的情況下,它不返回任何內容(“ numeric(0)”),但是當我使用諸如mean的函數添加na.rm命令時,它返回“ FUN(X [[1L]],Error。 ..):未使用的參數(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))))

我想知道如何通過該函數以及通常不是均值或中位數的自寫函數來避免此問題。

您需要將其作為參數添加到函數中,並將其傳遞給sum 您還需要考慮對nrow部分的影響。 然而,在函數的其余部分的情況下,我希望count_above_px是一個載體, nrow沒有意義在這里。 我假設您打算執行length ,並且您實際上是在計算mean ,無論如何它都具有na.rm參數。 您可能還需要查看pxcutoff因為它在函數中未定義-是否也應將其作為參數傳遞?

pctabovepx=function(x, na.rm=FALSE) {
  count_above_px=x>pxcutoff
  100*mean(count_above_px, na.rm=na.rm)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM