R 如何在表列表中使用bind_行?

R 如何在表列表中使用bind_行?,r,R,假设我有三个表,如下所示: table1 <- structure(list(Pos = 1:6, A = c(16.8508287292818, 0, 0.552486187845304, 0, 1.10497237569061, 1.38121546961326), C = c(1.93370165745856, 0.276243093922652, 0.828729281767956, 0.276243093922652, 0, 0.552486187845304 ), G =

假设我有三个表,如下所示:

table1 <- structure(list(Pos = 1:6, A = c(16.8508287292818, 0, 0.552486187845304, 
0, 1.10497237569061, 1.38121546961326), C = c(1.93370165745856, 
0.276243093922652, 0.828729281767956, 0.276243093922652, 0, 0.552486187845304
), G = c(1.10497237569061, 2.48618784530387, 0.276243093922652, 
0.828729281767956, 0.276243093922652, 0), T = c(0.828729281767956, 
0, 0.828729281767956, 1.10497237569061, 0, 0)), .Names = c("Pos", 
"A", "C", "G", "T"), row.names = c(NA, 6L), class = "data.frame")

table2<- structure(list(Pos = 1:6, A = c(4.15584415584416, 1.03896103896104, 
0.779220779220779, 0.692640692640693, 2.25108225108225, 2.94372294372294
), C = c(1.12554112554113, 0.173160173160173, 0.173160173160173, 
0.519480519480519, 0.173160173160173, 0.173160173160173), G = c(1.03896103896104, 
0.346320346320346, 0.0865800865800866, 0.432900432900433, 0.519480519480519, 
0.0865800865800866), T = c(2.77056277056277, 0.606060606060606, 
0.25974025974026, 0.692640692640693, 0.346320346320346, 0.25974025974026
)), .Names = c("Pos", "A", "C", "G", "T"), row.names = c(NA, 
6L), class = "data.frame")
table3 <- structure(list(Pos = 1:6, A = c(10.3492063492063, 0.317460317460317, 
0.349206349206349, 0.920634920634921, 1.96825396825397, 1.23809523809524
), C = c(0.825396825396825, 0.126984126984127, 0.349206349206349, 
0.317460317460317, 0.19047619047619, 0.253968253968254), G = c(0.761904761904762, 
0.952380952380952, 0.285714285714286, 0.412698412698413, 0.126984126984127, 
0.19047619047619), T = c(1.07936507936508, 0.412698412698413, 
0.476190476190476, 0.253968253968254, 0.19047619047619, 0.253968253968254
)), .Names = c("Pos", "A", "C", "G", "T"), row.names = c(NA, 
6L), class = "data.frame")
我的问题是,我无法运行此
bind_rows
函数来使用
files.table
绑定表1、表2和表3,而不是列出所有三个表。这是我得到的错误:
绑定行中的错误(x,.id):参数1必须有名称

这是我尝试的代码:

bind.table <- bind_rows(files.table, .id = "table") %>%
      gather(Base, Percent, -Pos, -table)
bind.table%
聚集(基准、百分比、-位置、-表格)

bind_rows的
.id
参数设置变量的名称,该变量包含每行来自的列表项的名称,而不是这些名称本身。您可以通过命名列表中的项目来设置表名。然后,
bind_rows
将获取这些名称,并将它们放入具有指定名称的列中:

table_list <- list(table1, table2, table3)
names(table_list) <- paste0("table", seq(1:3))
bind.table <- bind_rows(table_list, .id = 'id')

table\u list用于
bind\u rows
.id
参数设置变量的名称,该变量包含每一行来自的列表项的名称,而不是这些名称本身。您可以通过命名列表中的项目来设置表名。然后,
bind_rows
将获取这些名称,并将它们放入具有指定名称的列中:

table_list <- list(table1, table2, table3)
names(table_list) <- paste0("table", seq(1:3))
bind.table <- bind_rows(table_list, .id = 'id')

table\u尝试
files.table我很高兴它能工作,但并不理想。最好的解决方案是我在回答下面的其他评论中提到的。试试
files.table我很高兴它能工作,但并不理想。最好的解决方案是我在回答下面的其他注释中引用的。我不想键入
列表(表1、表2、表3)
,因为我从目录中读取了很多表。只需将它们放入列表中即可。没关系how@MAPK如果您是从文件中读取它们,那么真正的解决方案是将文件读取代码包装在一个
lappy
调用中,这样所有的表从一开始就在一个列表中。完全正确!很好的建议@joranI不想键入
list(表1、表2、表3)
,因为我从目录中读取了很多表。只需将它们放入列表中即可。没关系how@MAPK如果您是从文件中读取它们,那么真正的解决方案是将文件读取代码包装在一个
lappy
调用中,这样所有的表从一开始就在一个列表中。完全正确!伟大的建议@joran