rbind в петле в R - PullRequest
       16

rbind в петле в R

0 голосов
/ 25 апреля 2018

У меня есть n data.frame, который я хочу объединить с репутацией, где я выбираю 2 из них.

Допустим, у меня есть три data.frame с именами data1, data2 и data3. Я хочу объединить их с rbind, поэтому у меня есть: data1data2, data1data3, data2data1, data2data3, data3data1 и data3data2.

Вместо записи:

data1data2 <- rbind(data1, data2)
...
data3data2 <- rbind(data3, data2)

Есть ли способ, которым я могу сделать это с помощью цикла в R?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Вы можете сделать:

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)
0 голосов
/ 25 апреля 2018

Этот код будет создавать все комбинации фреймов данных rbind ed 2 за один раз.

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...