R 将处理后的多个文件合并到一个数据帧中,并为每个colname指定文件名

R 将处理后的多个文件合并到一个数据帧中,并为每个colname指定文件名,r,R,我有一个文件列表,我编写了一个函数来处理每个文件并返回两列(“name”和“value”) 预期产出: Apple Pear A 12 15 B 13 14 C 14 20 你可以试试 fns <- c("apple.txt", "pear.txt") (df <- Reduce(function(...) merge(..., all=F), lapply( seq(fns), function(x) {

我有一个文件列表,我编写了一个函数来处理每个文件并返回两列(“name”和“value”)

预期产出:

  Apple Pear
A   12   15
B   13   14
C   14   20
你可以试试

fns <- c("apple.txt", "pear.txt")
(df <- 
Reduce(function(...) merge(..., all=F), 
       lapply(
         seq(fns), function(x) {
           read.table(fns[x], 
                      header=TRUE, 
                      col.names = c("name", 
                                    tools::file_path_sans_ext(fns)[x]))
         })
)
)
#   name     apple     pear
# 1    A        12       15
# 2    B        13       14
# 3    C        14       20
(参见子部分)

要去掉
name
列,可以使用
subset(df,select=-name)

您可以只
cbind
这两个数据帧,但这将假定行排列完全正确。另一个选项是将
name
列上的两个数据帧
merge()。
  Apple Pear
A   12   15
B   13   14
C   14   20
fns <- c("apple.txt", "pear.txt")
(df <- 
Reduce(function(...) merge(..., all=F), 
       lapply(
         seq(fns), function(x) {
           read.table(fns[x], 
                      header=TRUE, 
                      col.names = c("name", 
                                    tools::file_path_sans_ext(fns)[x]))
         })
)
)
#   name     apple     pear
# 1    A        12       15
# 2    B        13       14
# 3    C        14       20
sub("\\b(\\w)", "\\U\\1", fns, perl=TRUE)