在R中,在处理数据帧列表的lappy内部使用函数apply()

在R中,在处理数据帧列表的lappy内部使用函数apply(),r,R,我正在使用一个函数,我想在我的列表中的每个data.frame上运行该函数。我似乎无法正确设置索引,经过思考后,我可能需要将函数保留在原始的lappy之外,但这并没有改善任何效果 我的两个NAs数据帧变成了一个列表: 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 =

我正在使用一个函数,我想在我的
列表中的每个
data.frame
上运行该函数。我似乎无法正确设置索引,经过思考后,我可能需要将函数保留在原始的
lappy
之外,但这并没有改善任何效果

我的两个NAs数据帧变成了一个列表:

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)
R给出了一个从括号开始的错误(我已经尝试使用一个括号而不是两个,但同样的情况也发生了):

>dd df\u mos
>纳乌数
>x=mylist[i][na_计数<2,]
错误:找不到对象“i”
>          
>x=x[,c(“E”)]#只给我E的值
错误:找不到对象“x”
>          
>x#返回x
错误:找不到对象“x”
>         })
错误:“}”中出现意外“}”

尝试将您的
countNA
函数修改为:

countNA <- function(list_entry) apply(list_entry, MARGIN = 1, FUN = function(x) length(x[is.na(x)]))

countNA尝试将
countNA
函数修改为:

countNA <- function(list_entry) apply(list_entry, MARGIN = 1, FUN = function(x) length(x[is.na(x)]))

countNA
lappy(mylist,function(x)x[rowSums(is.na(x))@jeremycg,我不确定你指的是什么?@jeremycg我不能只使用mylist,因为我只想从列的子集中求和(我的真实数据有20多个变量,我需要12个变量中的8个才能返回所谓的“E”在本例中)基于jeremycg的评论,您可以将所有代码替换为
dd
lappy(mylist,function(x)x[rowSums(is.na(x))@jeremycg,我不确定您指的是什么?@jeremycg我不能只使用mylist,因为我只是试图从列的子集中获取总和(我的真实数据有20多个变量,我需要12个变量中的8个才有值,以便返回在本例中被称为“E”的内容)基于jeremycg的注释,您可以将所有代码替换为
dd
> 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 <- function(list_entry) apply(list_entry, MARGIN = 1, FUN = function(x) length(x[is.na(x)]))