【问题标题】:Save data from loop in txt file将循环中的数据保存在 txt 文件中
【发布时间】:2016-08-09 14:25:51
【问题描述】:

我有一个数据框EEG

Description   Onset    Run
Neut_inc      3.7416   Run1
Neut_inc      4.3636   Run1
Reward        4.48     Run2
Neut_inc      5.7416   Run2
Neut_inc      6.72     Run3
Neut_inc      7.7416   Run3
Reward        8.96     Run3

我的目标是对每次运行的所有 Neut_inc 条件进行子集化,并将它们保存在每个 Run 的单独 .txt 文件中,因此我读入后的 .txt 文件会看起来像这样:

> Run1 
Description   Onset    Run
Neut_inc      6.72     Run3
Neut_inc      7.7416   Run3

我编写了一个循环遍历所有运行的代码,但是它仅在最后一次运行时保存 .txt 文件。

for(run_number in unique(EEG$Run)){
    run <- subset(EEG[which(EEG$Run == run_number),])
    Neut_con <- subset(run[which(run$Run == run_number),], Description %in% c("Neut_con"))  

write.table(Neut_con, file ="C:/Users/EXPERIMENTS/onsets/Neut_con.txt",row.names=FALSE, quote = FALSE, sep = "\t")  

}

我应该如何更改代码?

【问题讨论】:

  • 我在for 循环的末尾没有看到}
  • 我忘记了。有一个}

标签: r loops dataframe save


【解决方案1】:
for(run_number in unique(EEG$Run)){
    run <- subset(EEG[which(EEG$Run == run_number),])
    Neut_con <- subset(run[which(run$Run == run_number),], Description %in% c("Neut_con"))  

    write.table(Neut_con, file =paste0("C:/Users/EXPERIMENTS/onsets/Neut_con_", run_number, ".txt"),row.names=FALSE, quote = FALSE, sep = "\t")  

}

问题是您正在编写一个文件,然后每次执行循环时都会覆盖它。通过添加 paste0() 函数,您可以使文件名动态化,以便您拥有 file1、file2、file3 等。这样您就不会每次都覆盖文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多