我有几个数据框:
toto1_1 <- data.frame(x=1:3)
toto1_2 <- data.frame(x=1:3)
titi1_1 <- data.frame(x=1:3)
titi1_2 <- data.frame(x=1:3)
使用2种不同的模式连接这些表的最佳方法是什么?
谢谢。
答案 0 :(得分:0)
mget
函数在给定字符向量时将返回数据对象列表:
totoList <- mget( paste0( rep(c("toto","titi"),each=2), rep(c("1_1","1_2") ) )
str(totoList)
List of 4
$ toto1_1:'data.frame': 3 obs. of 1 variable:
..$ x: int [1:3] 1 2 3
$ toto1_2:'data.frame': 3 obs. of 1 variable:
..$ x: int [1:3] 1 2 3
$ titi1_1:'data.frame': 3 obs. of 1 variable:
..$ x: int [1:3] 1 2 3
$ titi1_2:'data.frame': 3 obs. of 1 variable:
..$ x: int [1:3] 1 2 3
如果目标是单一的欲望,那么这可能是通往以下途径的中间结果:
do.call( "rbind", totoList) # rbind transforms character value to an R function
x
toto1_1.1 1
toto1_1.2 2
toto1_1.3 3
toto1_2.1 1
toto1_2.2 2
toto1_2.3 3
titi1_1.1 1
titi1_1.2 2
titi1_1.3 3
titi1_2.1 1
titi1_2.2 2
titi1_2.3 3
答案 1 :(得分:0)
请参阅下面的一些建议。 1.它们使用rbind()函数连接起来 2.它们使用c()函数连接 - 保留为单独的向量元素,但连接成单个元素 3.也许更有用,因为它保留了原始表的表名以供将来分析和排序:将每个表添加到列表中,然后为每个表名及其数据创建data.frame;然后使用rbind()
连接成一个对象toto1_1 <- data.frame(x=1:3)
toto1_2 <- data.frame(x=1:3)
titi1_1 <- data.frame(x=1:3)
titi1_2 <- data.frame(x=1:3)
#1
rbind(toto1_1,toto1_2,titi1_1,titi1_2)
#2
c(toto1_1,toto1_2,titi1_1,titi1_2)
#3
l <- list(toto1_1=toto1_1,toto1_2=toto1_2,titi1_1=titi1_1,titi1_2=titi1_2)
do.call(rbind,lapply(names(l),FUN=function(x) { data.frame(table_name=x,table_data=l[[x]]) }))