如何从数据框列表中删除列?

How to delete columns from a list of dataframes?

我有一个包含 80 多个 csv 文件的列表,所有文件都具有相同的行标题和列数。这是列表中我的一个 csv 文件的标题:

         Date Tx2m Tn2m   Pr
1    1/1/1988   NA   NA  0.0
2    1/2/1988   NA   NA  0.0
3    1/3/1988   NA   NA  0.0
4    1/4/1988   NA   NA  0.0
5    1/5/1988   NA   NA  0.0

我想删除“Tx2m”和“Tn2m”这两个列,它们在我的所有文件中都具有 Null 值。

我试过运行这个代码:

lapply(myList, function(x) { x["Tx2m"] <- NULL; x })

但我收到以下错误消息:x["Tx2m"] <- NULL 中出错:替换的长度为零。

如何删除这些列并将它们再次保存为我的工作目录中的 CSV 文件?

最好通过在一列中找到至少一个非 NA 元素来自动执行此操作,并且 Filter 只有那些列,因为 list 元素的 NA 内容可能不同

myList <- lapply(myList, function(x) Filter(function(u) any(!is.na(u)) u))

tidyverse

中的另一个选项
library(dplyr)
library(purrr)
myList <- map(myList, ~ .x %>%
          select(where(~ any(!is.na(.)))))