【问题标题】:Create a loop function for calculations in with R and save result使用 R 为计算创建循环函数并保存结果
【发布时间】:2014-09-11 18:01:44
【问题描述】:

我在 20 个文件中有 20 个站点(以 txt 格式,如 Bariko.txt)。我想在一个脚本中使用循环同时进行计算,之后我使用同一目录中的(20)个不同的站名(如 bariko_result.txt)将结果保存在另一个文件中(20 个单独的文件)。 这是一个例子:

     library(dplyr)
     data=read.csv("~/Task/New_Job/Stations_data/Bariko.txt",header=T,sep="\t")
     data_filtered = filter(data, Month == 2 | Month == 3)
     write.table(data_filtered, file = "bariko_result.txt", quote =FALSE, 
     row.names=FALSE, col.names = TRUE)


        station build   Year Month  
    1   Bariko 24.5  1961     1      
    2   Bariko 29.1  1962     1       
    3   Bariko 26.4  1963     1       
    4   Bariko 29.0  1961     2       
    5   Bariko 22.0  1962     2      
    6   Bariko 25.9  1963     2       
    7   Bariko 24.2  1961     3       
    8   Bariko 23.9  1962     3       
    9   Bariko 24.4  1963     3       
    10  Bariko 24.0  1961     4      
    11  Bariko 24.2  1962     4      
    12  Bariko 24.8  1963     4    

我可以为一个站做,但是 20 这将花费太多时间。 谢谢。

【问题讨论】:

  • 我真的不明白你的设置是什么。您说您有 50 个文本格式的数据框,但您只显示打开其中一个。他们每个人都在一个单独的文件中吗?所有这些文件都在一个文件夹中,它们是如何命名的?您希望如何命名输出文件?
  • 在一个单独的文件中,但在同一个目录中
  • 但是它叫什么?他们是按照惯例命名的吗?应该如何命名输出文件?你没有回答这些。
  • 我选择将所有 20 个文件重命名为 01.txt, 02.txt ,... ,20.txt;和输出像 01_result.txt, 02_result.txt ,..., 20_result.txt

标签: r


【解决方案1】:

应该这样做。

Input <- paste0(formatC(1:20, width = 2, flag = "0"),".txt")
Output <- paste0(formatC(1:20, width = 2, flag = "0"), "_result.txt")

data <- list()
data_filtered <- list()

for (i in 1:length(Input)){
      data[[i]] <- read.csv(Input[i], header = T, header=T,sep="\t")
      data_filtered[[i]] <- filter(data[[i]], Month == 2 | Month == 3)
      write.table(data_filtered[[i]], file = Output[i], quote =FALSE, 
                  row.names=FALSE, col.names = TRUE)
}

【讨论】:

  • 非常感谢@LauraS,它完全符合我的要求。如果我有很多计算要做或者只是将它插入同一个循环中,我可以复制循环吗?
  • 我不确定你的意思,@NVega,但我想不出你不能在循环中嵌入循环的情况。程序员有时会感到困惑,但 R 对此没有任何问题。
猜你喜欢
  • 1970-01-01
  • 2021-05-04
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
  • 2020-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多