我目前正在使用R Studio版本1.0.143和R版本3.4.4。
我正在尝试创建一个apply()函数,该函数对许多文件执行以下操作:
df1 <- read_excel("Sample 1.xlsx")
df1["Sample"] <- "Sample 1"
df2 <- read_excel("Sample 2.xlsx")
df2["Sample"] <- "Sample 2"
rbind(df1, df2) -> final
一个向数据框添加一列以告知变量属于哪个样本的函数,因为在此之后我将绑定所有样本。不仅此功能必须读取许多excel文件,而且还需要在每个文件中添加带有文件名的列(作为示例)。我在其他问题上找不到类似的东西
我尝试使用lapply,但没有成功。我需要这样做是因为我想合并100个以上的数据帧(我可以手工完成,但是似乎不使用apply显得很愚蠢)。 所有文件都具有相同的列,因此,当一个文件中不存在任何列时,就不需要使用将NA放进去的功能。
答案 0 :(得分:1)
names <- c("Sample 1", "Sample 2")
out_l <- lapply(names, function(x) {
tmp_df <- read_excel(paste0(x, ".xlsx"))
tmp_df[["Sample"]] <- x
tmp_df
})
out_df <- do.call(rbind.data.frame, out_l)
或者根据@Parfait的评论使用较短的版本
names <- c("Sample 1", "Sample 2")
out_l <- lapply(names, function(x) {
transform(read_excel(paste0(x, ".xlsx")), Sample = x)
})
out_df <- do.call(rbind.data.frame, out_l)