[英]How do you use sapply() with a “list” that includes two columns of data?
我目前正在使用sapply
調用一個加權均值函數,該函數需要兩個輸入,一個日期和每個日期包含多個值的日期框架,
sapply(unique(sort(d$Date, decreasing=TRUE)), WeightedMean, data=d))
WeightedMean <- function(date, data) {...}
但我想將此功能更新為三個輸入。 我已經創建了以下代碼,但是無法在我的WeightedMean
函數中引用兩個輸入,
sapply(unique(d[order(d$Date, d$Id, decreasing=TRUE), c("Date", "Id")]),
WeightedMean, data=d)
WeightedMean <- function(date, id, data) {...}
請注意, WeightedMean
函數將按日期和ID過濾數據,然后計算匯總值。 有沒有一種方法可以更新上面的代碼以將兩個參數傳遞給函數?
您可以使用mapply
,而是如果sapply
。 ( m
表示“多個參數”。)
ordered_data <- unique(d[order(d$Date, d$Id, decreasing = TRUE), c("Date", "Id")])
with(ordered_data, mapply(WeightedMean, Date, Id))
通過使用匿名函數。
您沒有提供有效的示例,因此以下代碼未經測試,但可以正常工作:
sapply(unique(d[order(d$Date, d$Id, decreasing=TRUE), c("Date", "Id")]),
function(x){WeightedMean(x$Date, x$Id, data=x)})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.