如何从数据框列表中删除列?
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(.)))))
我有一个包含 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(.)))))