我有n
data.frame,我希望与声誉相结合,我选择其中2个。
假设我有三个名为data1
,data2
和data3
的data.frame。我想将它们与rbind
结合使用,因此我得到:data1data2
,data1data3
,data2data1
,data2data3
,data3data1
和{{1} }。
而不是写作:
data3data2
有没有办法可以用R中的循环来做到这一点?
答案 0 :(得分:0)
此代码将一次构建数据帧的所有组合rbind
。
for (i in 1:n) {
for (j in 1:i) {
if(i==j) { next }
df_first = paste0("data",i)
df_second = paste0("data",j)
expr_rbind = paste0("rbind(",df_first,",",df_second,")")
expr_store_as = paste0(df_first,df_second)
expr_final = paste0(expr_store_as," = ",expr_rbind)
eval(parse(text=expr_final))
}
}
要获取排列而不是组合,请将内循环中j
的循环从1更改为n
,而不是1到i
。
答案 1 :(得分:0)
你可以这样做:
data1 <- BOD; data1$demand <- data1$demand +100
data2 <- BOD; data2$demand <- data2$demand +200
data3 <- BOD; data3$demand <- data3$demand +300
L <- list(data1, data2, data3)
combn(L, 2, simplify = FALSE, FUN=function(x) list(rbind(x[[1]], x[[2]]), rbind(x[[2]], x[[1]])))
或(以便列表):
R <- combn(L, 2, simplify = FALSE, FUN=function(x) list(rbind(x[[1]], x[[2]]), rbind(x[[2]], x[[1]])))
do.call(c, R)