的每個元素我有數據的列表,改變參數值的函數幀lapply與列表
listofdf <- list(a = a, b = b, c = c)
我有一個函數:
remove_outliers <- function(x, ll, ul) {
require(dplyr)
x <- x %>% filter(SALES < quantile(SALES, probs = c(ll)) & SALES > quantile(SALES, probs = c(ul)))
return(x)
}
我要在名單上應用此功能。 條件是參數ul
和ll
的值在列表中的每個元素的函數更改中。
我不能寫:這取決於DFlapply(listofdf, remove_outliers, 0.01, 0.99)
因爲0.01 & 0.99變化。
我有一個暗示,這可以使用Map
或mapply
所以我嘗試這樣解決:
listofdf <- Map(remove_outliers, listofdf, MoreArgs = list(ll = c(0.1, 0.2, 0.3), ul = c(0.90, 0.95, 0.99)))
,但我得到的錯誤:
Warning messages:
1: In filter_impl(.data, dots) :
longer object length is not a multiple of shorter object length
2: In filter_impl(.data, dots) :
longer object length is not a multiple of shorter object length
3: In filter_impl(.data, dots) :
longer object length is not a multiple of shorter object length
4: In filter_impl(.data, dots) :
longer object length is not a multiple of shorter object length
不要在'Map'中使用'MoreArgs'。試試'Map(remove_outliers,listofdf,c(0.1,0.2,0.3),c(0.90,0.95,0.99))' – nicola
返回一個空的列表! **在2個小時的掙扎之後劃傷頭部** – vagabond
,我意識到當我使用導致NULL數據集的Map時,我正在顛倒函數中參數的值。總之我寫的是:'map(remove_outliers,listofdf,c(0.9,0.95,0.98),c(0.1,0.2,0.3))',我的數據中顯然沒有任何一行符合這個條件! – vagabond