[英]In R, use a function apply() inside of lapply that is working over a list of data frames
我正在使用另一個線程中的函數,我想在list
每個data.frame
上運行。 我似乎無法正確設置索引,並且在閱讀了此想法之后,也許我需要將該函數保留在原來的lapply
,但這並沒有任何改善。
我的兩個帶有NA的數據幀變成一個列表:
df1 <- data.frame(
A = c(1, 2, 3, NA),
B = c(1, 2, NA, NA),
C = c(1, NA, NA, NA),
E = c(5, 6, 7, 8)
)
df2 <- data.frame(
A = c(1, 2, 3, NA),
B = c(1, 2, NA, NA),
C = c(1, NA, NA, NA),
E = c(5, 6, 7, 8)
)
mylist <- list(df1, df2)
我的函數在lapply中:
dd <- lapply(seq_along(mylist), function(i){
countNA <- function(mylist[[i]]) apply(mylist[[i]], MARGIN = 1, FUN = function(x) length(x[is.na(x)]))
df_mos <- subset(mylist[[i]], select = c("A", "B", "C"))
na_count <- countNA(df_mos)
x = mylist[[i]][na_count < 2,]
x = x[, c("E")] # Only give me value of E
x # return x
})
為此,我期望以下幾點:
> dd
[[1]]
E
1 5
2 6
[[2]]
E
1 5
2 6
R從括號開始給我這個錯誤(並且我已經嘗試過只使用一個而不是兩個,但是發生相同的事情):
> dd <- lapply(seq_along(mylist), function(i){
+
+ countNA <- function(mylist[i]) apply(mylist[i], MARGIN = 1, FUN = function(x) length(x[is.na(x)]))
Error: unexpected '[' in:
"
countNA <- function(mylist["
>
> df_mos <- subset(mylist[i], select = c("A", "B", "C"))
Error in subset(mylist[i], select = c("A", "B", "C")) :
object 'i' not found
>
> na_count <- countNA(df_mos)
Error: could not find function "countNA"
>
> x = mylist[i][na_count < 2,]
Error: object 'i' not found
>
> x = x[, c("E")] # Only give me value of E
Error: object 'x' not found
>
> x # return x
Error: object 'x' not found
> })
Error: unexpected '}' in " }"
嘗試將您的countNA
函數修改為此:
countNA <- function(list_entry) apply(list_entry, MARGIN = 1, FUN = function(x) length(x[is.na(x)]))
實際上,您將特定的子集列表作為參數,而函數應采用通用參數,在您的情況下為列表。 如何隔離該列表以傳遞到該函數在其他地方進行了處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.