2016-06-27 5 views
0

私は次の関数を書いた:関数内で要約lmer保存

filename <- list.files(path = "path", pattern = ".csv", full.names = TRUE) 

analyze <- function(filename) { 
    dat <- read.csv(file = filename, header = TRUE) 
    twolevel <- lmer(DV ~ 1 + (1 | item), data = dat, REML = FALSE) 
    output <- summary(twolevel) 
    sink("output.txt") 
    for (i in 1:73) print(output) 
    sink() 
} 

for (f in filename) { 
    analyze(f) 
} 

ファイル名は、73枚のデータフレームのリストが含まれています。残念ながら、私は73の分析のそれぞれの要約は得られませんが、73回の同じ結果が得られます。私のコードで何が間違っていますか?ありがとう!!

+1

としてコマンドを実行します。すべての行。たとえば、あなたはおそらく 'sink(" output.txt "、append = TRUE)'を使うことを意図していました。これは、ファイルを何度も何度も書き換えているからです。また、なぜ同じオブジェクトに 'print'を73回実行する' for'ループを追加するのでしょうか? – Laterow

+0

@ Laterowのコメントに加えて、 'sink(" output.txt "、append = T)'を1行上に移動し、その後に 'summary(twolevel)'を続けます。あなたの 'analyze'関数内の' for'ループは削除する必要があります。 – nya

+0

ありがとう、私は追加引数を忘れてしまった! –

答えて

1

@Laterowと@nyaで説明したように、あなたへの変更が機能 - その後、

analyze <- function(filename) { 
    dat <- read.csv(file = filename, header = TRUE) 
    twolevel <- lmer(DV ~ 1 + (1 | item), data = dat, REML = FALSE) 
    sink("output.txt",append = TRUE) 
    return(summary(twolevel)) 
} 

そしてラインで、あなたのコード行を実行してみて、中に何が起こるか見

for (f in filename) { 
    analyze(f) 
} 
関連する問題