为全球环境中的多个数据框更改 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
使用 get
和 assign
解决了问题
# 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)
}
我已经在我的全局环境中加载了一些数据帧(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
使用 get
和 assign
解决了问题
# 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)
}