簡體   English   中英

如何將sapply()與包含兩列數據的“列表”一起使用?

[英]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.

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