从存储在列表中的许多数据框中删除特定列

C. *_*ney 0 r

我有一段代码正在读取许多数据帧,然后将它们绑定

data.files = paths %>% ##takes the names of all the objects that I want to read in
  map(read.csv) %>% ##this reads all the correctly named .csv files into a list object
  reduce(rbind) ##reduces them all from the list into a single dataframe by rbind
Run Code Online (Sandbox Code Playgroud)

wherepaths是要读入的 .csv 文件名称的向量。但是问题是这些对象中的许多都缺少一个列LaserEnergy,这使得 rbind 失败。此列对我的分析不重要,是早期数据处理的剩余部分。有没有一种方法可以通过并从列表中具有该列的每个对象中删除该列,或者在正确位置添加一个空列到那些没有它的对象?

另一种方法是我浏览 2000 多个文件并手动添加或删除列。

Cal*_*You 5

像这样的东西?如果没有数据示例,很难判断什么会起作用,但是使用purrr::map_dfrwhich 是mapthen 的简写bind_rows应该可以避免错误。bind_rows如果列不存在于所有列表元素中,则不会抛出错误,它只是用NA. 然后,您可以从结果数据框中删除不需要的列。

library(tidyverse)
data.files <- paths %>%
    map_dfr(read_csv) %>%
    select(-LaserEnergy)
Run Code Online (Sandbox Code Playgroud)