35608


Rでデータ前処理中ですが2つほど質問があるので書かせていただきます。

1  
data1~data3というデータフレームを読み込み済みで,
sum1.csv~sum3.csvというファイルを生成したいと考えています。(実際はもっとパターンが多いため単純に全パターン書くというのは厳しいです。）assignやcsvdataのあたりで読み込みが上手く行かずエラーが出てしまうのでアドバイスをお願い致します。アルゴリズムとしましてはdataにdata1を代入、それを加工しつつcsvdataに加工し出力、dataにdata2を上書きして同じことを繰り返す…という感じです。

[code]

    library(tidyverse)
    main <- for(p in 1:3){
    assign(data,paste("data", p, sep = ""))
    csvdata <- data %>% mutate(hogehoge...)
    
    write_csv(csvdata,paste0("sum",p,".csv"))
    }
    
[/code]

2

[code]

    bind_rows(as.data.frame(a1),as.data.frame(a2),as.data.frame(a3))
    
[/code]

とデータフレームを縦にくっつけたいのですが、3つのデータフレーム間に空白行がほしいです。  
どのように対処すればよいでしょうか？


CC BY-SA 3.0
2017-06-14T17:18:20.890
35579
2018-03-04T10:50:47.613
2018-03-04T10:50:47.613
12457
12457
question
r dplyr tidyverse
Rで連番のデータフレームを加工して連番で出力する


こういう感じのコードではどうでしょうか:

[code]

    # パッケージ読み込み
    library(tidyverse)
    
    # テスト用にdata.frame作成
    # 以下のコードでdata1-data3というdata.frameができます
    data_list <- paste("data", 1:3, sep = "")
    for(i in 1:length(data_list)) {
      assign(
        data_list[i],
        data.frame(
          x1 = rnorm(10),
          x2 = rnorm(10)
        )
      )
    }
    
    # メインの処理
    # data.frameを加工してcsvへの出力
    for(i in 1:length(data_list)) {
      get(data_list[i]) %>% 
        mutate(x3 = x1 + x2) %>% 
        write_csv(paste("sum", i, ".csv", sep = ""))
    }
    
[/code]

`assign()`は第一引数に文字列を受け付け，第二引数にアサインする中身を指定します。質問文のコード内で`assign()`を使っている箇所では，第一引数には未定義のオブジェクトであり，また第二引数が単なる文字列となっています。そのためうまく`data`に期待したデータが入らないのかなと思いました。またcsvdataのあたりでのエラーは，(1)`data`にちゃんとデータが格納されていないため，(2)データ加工のコードに問題がある，のどちらかです。

ただ，ここで`assign()`を使ってデータフレームを呼び出すよりも，すでにdata1-data3と連番で存在するようでしたので`get()`で呼び出すコードで書いています。`%>%`を利用されているみたいでしたので，上記コードでも利用しました。


CC BY-SA 3.0
2017-06-15T10:58:03.467
35608
2017-06-15T10:58:03.467
19063
35579
answer