У меня есть фреймы данных в моей среде, и я сохранил их имена в символьном векторе.
ldf <- names(which(unlist(eapply(.GlobalEnv,is.data.frame))))
когда я печатаю ldf, его структура похожа на эту:
>ldf
[1] "tdf1" "tdf2"
[3] "tdf3"
Я хочу удалить строки, которые имеют много значений na из каждого из этих фреймов данных. Я создал функцию следующим образом:
remna <- function(df) {
df$countofna <- apply(df[,c(1:length(df))], 1,function(x) sum(is.na(x)))
df <- df[df$countofna <=3, ]
df$countofna <- NULL
df <- df[1:nrow(df)-1, ]
}
Как применить функцию remna
к каждому из фреймов данных с именами, хранящимися в ldf
. Не используя ldf
, я попытался использовать цикл for:
for (i in names(which(unlist(eapply(.GlobalEnv,is.data.frame))))) {
remna(i)
}
, однако при выполнении remna не удается выполнить следующую ошибку:
Error in df[, c(1:length(df))] : incorrect number of dimensions
Функция remna
отлично работает наотдельные кадры данных.