为全球环境中的多个数据框更改 header

Change header for multiple data frames on global environment

我已经在我的全局环境中加载了一些数据帧(4 个,全部为 .csv),我希望最终 rbind 将它们全部堆叠到一个新的数据帧中。就我而言,我只能 rbind 具有相同 header 的数据帧,这就是为什么我试图将它们的 header 更改为相同的名称。

我试过以下方法:

# group all files with the extension .csv 
filenames <- Sys.glob("*.csv")

# then I tried to rename them with a `for loop`
for(i in filenames) {
  names(filenames[i]) <- "epitope"
}

虽然没有用。我认为问题是 R 没有将 filename 中的元素(即我拥有的四个数据框)视为独立的 data.frames 本身(其 header 应该被更改),而是简单地作为字符串。当我输入:

filenames[1]

我明白了

[1] "abc_65prots_all_15mers.csv"

当我期待 R 输出我的数据框(名为 abc_65prots_all_15mers.csv)时。

在这个未经测试的伪代码中,你可以做这样的事情。 lapply 会为您解决官僚问题。

mf <- Sys.glob(".csv")

xy <- lapply(mf, read.table, header = TRUE) # read files into a list

# rename each dataset
xy <- lapply(xy, FUN = function(x) {
  names(x) <- c("vector of names")
})

do.call(rbind, xy) # merge all datasets

使用 getassign 解决了问题

# group all files with the extension .csv 
filenames <- Sys.glob("*.csv")

# Then the loop
      for(i in filenames) {
      tables <- get(i)
      names(tables) <- "epitope"
      assign(i, tables)
    }