R 从列表中存储的许多数据帧中删除特定列

R 从列表中存储的许多数据帧中删除特定列,r,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

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

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
其中路径是要读取的.csv文件名的向量。然而,问题是这些对象中的许多缺少一个单列激光能量,这使得rbind失败。本专栏对我的分析并不重要,它是早期数据处理的遗留内容。有没有一种方法可以让我从列表中每个有该列的对象中删除该列,或者在没有该列的对象的正确位置添加一个空列


另一种方法是检查2000多个文件,手动添加或删除列

像这样的?如果没有数据示例,很难准确地判断什么是有效的,但是使用purr::map_dfr(map then bind_行的缩写)应该可以避免错误。如果所有列表元素中都不存在列,则bind_行不会抛出错误,它只是用NA填充。然后可以从生成的数据帧中删除不需要的列

library(tidyverse)
data.files <- paths %>%
    map_dfr(read_csv) %>%
    select(-LaserEnergy)

像这样的?如果没有数据示例,很难准确地判断什么是有效的,但是使用purr::map_dfr(map then bind_行的缩写)应该可以避免错误。如果所有列表元素中都不存在列,则bind_行不会抛出错误,它只是用NA填充。然后可以从生成的数据帧中删除不需要的列

library(tidyverse)
data.files <- paths %>%
    map_dfr(read_csv) %>%
    select(-LaserEnergy)

这就是最终对我有效的方法,我还必须使用data.table包

data.files <- paths %>%
   map(read._csv) %>%
   rbindlist(fill = T)  ##This function is from the data.tables package, fill = T tells it to fill missing columns with NA

出于某种原因,read_csv在与map_dfr结合使用时不喜欢列类,并试图将列强制放入不应该包含的类中。我在文档中找不到任何可以解决此问题的内容,试图指定col_类型对我不起作用

这就是最终对我起作用的原因,我还必须使用data.table包

data.files <- paths %>%
   map(read._csv) %>%
   rbindlist(fill = T)  ##This function is from the data.tables package, fill = T tells it to fill missing columns with NA

出于某种原因,read_csv在与map_dfr结合使用时不喜欢列类,并试图将列强制放入不应该包含的类中。我在文档中找不到任何可以解决此问题的内容。尝试指定列类型对我不起作用。

在reducerbind调用之前添加一个带有select LaserEnergy的管道?在reducerbind调用之前添加一个带有select LaserEnergy的管道?这会引发一个错误,其中一列无法从字符转换为整数。它不应该这样做必须是整数列。我阅读了bind_行和csv的文档,但没有任何东西能够解决这个问题。我是否可以应用一个参数,告诉它保持列的原样?col_type是指定列类型的方式,cols是更改默认值的方式。因为您有不同的列号,所以可以将默认值设置为character,然后进行修复。同样,这是一种无法理解的问题,需要一个例子来解决。很高兴您的操作正常。这会引发一个错误,其中一列无法从字符转换为整数,它不应该是整数列。我阅读了bind_行和csv的文档,但没有任何东西能够解决这个问题。我是否可以应用一个参数,告诉它保持列的原样?col_type是指定列类型的方式,cols是更改默认值的方式。因为您有不同的列号,所以可以将默认值设置为character,然后进行修复。同样,这是一种无法理解的问题,需要一个例子来解决。不过很高兴你找到了工作。