您可以使用do.call
cn1 <- c("aa", "bb", "cc")
cn2 <- c("ab", "bb", "cc")
cn3 <- c("ab", "bc", "cc")
cnames <- list(cn1, cn2, cn3)
do.call(rbind, cnames)
# [,1] [,2] [,3]
#[1,] "aa" "bb" "cc"
#[2,] "ab" "bb" "cc"
#[3,] "ab" "bc" "cc"
或可替代dataframes的名单上使用sapply
df1 <- data.frame(aa=runif(9), bb=runif(9), cc=runif(9))
df2 <- data.frame(ab=runif(9), bb=runif(9), cc=runif(9))
df3 <- data.frame(ab=runif(9), bc=runif(9), cc=runif(9))
dataframes <- list(df1, df2, df3)
sapply(dataframes, colnames)
# [,1] [,2] [,3]
#[1,] "aa" "ab" "ab"
#[2,] "bb" "bb" "bc"
#[3,] "cc" "cc" "cc"
从没有加载
CSV文件,这样做首先创建示例文件
library(Hmisc)
df1 <- data.frame(aa=runif(9), bb=runif(9), cc=runif(9))
df2 <- data.frame(ab=runif(9), bb=runif(9), cc=runif(9))
df3 <- data.frame(ab=runif(9), bc=runif(9), cc=runif(9))
# create named list of data frames
dataframes <- llist(df1, df2, df3)
dir <- "dftest"
dir.create(dir)
# write data frames in list to individual csv files int specified directory
lapply(names(dataframes), function(x) {
write.csv(dataframes[[x]], file=file.path(dir, paste0(x, ".csv")),
row.names=FALSE)
})
个
读取CSV文件并获得列名
# get the path of the csv files
filenames <- file.path(dir, list.files(dir, pattern="*.\\.csv$"))
# read csv files into a list and assign names
csv.list <- lapply(filenames, read.csv)
names(csv.list) <- sub("\\.csv$", "", basename(filenames))
# same as before
sapply(dataframes, colnames)
我试图用你的解决方案,并复制你的例子。我相信问题是'cnames'和'dataframes'都是由你使用的整个对象组成的对象('dataframes'返回3个随机dfs)。在我的情况下'mylist'只包含我的dfs名称,如:df1.csv,df2.csv ... dfn.csv .. – Alexandros
啊,那么你必须首先使用'read.csv'加载数据。我会看看我是否可以鞭打一些东西。 – AkselA