1. ホーム
  2. r

データフレームをforループでまとめて追加する

2023-08-06 18:31:47

質問

私は for loop があり、各反復の後にデータフレームが生成されます。私はすべてのデータフレームを一緒に追加したいのですが、それが困難であることがわかります。以下は私が試していることです。 それを修正する方法を提案してください。

d = NULL
for (i in 1:7) {

  # vector output
  model <- #some processing

  # add vector to a dataframe
  df <- data.frame(model)

}

df_total <- rbind(d,df)

どのように解決するのですか?

ループの中でやらない。リストを作成し、ループの外でそれらを組み合わせてください。

datalist = list()

for (i in 1:5) {
    # ... make some data
    dat <- data.frame(x = rnorm(10), y = runif(10))
    dat$i <- i  # maybe you want to keep track of which iteration produced it?
    datalist[[i]] <- dat # add it to your list
}

big_data = do.call(rbind, datalist)
# or big_data <- dplyr::bind_rows(datalist)
# or big_data <- data.table::rbindlist(datalist)

これはよりRに近い方法です。また、特に dplyr::bind_rows または data.table::rbindlist で、データフレームを最終的に結合します。