【问题标题】:Loop in R (probably too simple?)R中的循环(可能太简单了?)
【发布时间】:2014-07-22 10:54:35
【问题描述】:

我是 R 新手,但不知何故我还不知道如何正确编写循环。当然,我检查了一些手册和论坛条目。但我可能也太傻了。真丢人。这是我的问题:

我想加载精确的 44 个迷你数据集(每个代表一年(它们被称为 year1871.csv、year1872.csv 等)。我想,一个循环将有助于加载所有单独的 CSV。基本上我希望循环为每个 CSV 执行以下三行。但我真的不知道如何编写代码。

year1871= read.csv("year1871.csv", stringsAsFactors=TRUE) year1871$stateA = factor(year1871$stateA) year1871$stateB = factor(year1871$stateB)

year1872= read.csv("year1872.csv", stringsAsFactors=TRUE) year1872$stateA = factor(year1872$stateA) year1872$stateB = factor(year1872$stateB)

...

如果有人能提供帮助,那就太好了。谢谢!!

【问题讨论】:

    标签: r loops


    【解决方案1】:

    看起来你没有很努力,开始:

    for (i in 1:50 ) { 
         ...
    }
    

    i 将采用 1 到 50 之间的值。

    创建一个空列表:

    els = list()
    

    在字符串中创建 year02.csv 你可以这样做:

    i = 2
    num = formatC(i, width = 2, format = "d", flag = "0") 
    filename = paste("year", num, ".csv", sep="")
    print(filename)
    

    要添加一个名为 list01 的元素,您可以执行以下操作:

    listname = paste("year", num, sep="")
    els[[listname]] = read.csv(filename, stringsAsFactors=TRUE)
    

    现在您只需将各个部分连接在一起即可。

    【讨论】:

      【解决方案2】:

      好吧,我自己找到了答案:

      for (i in 1871:1914) {
                        assign(
                                paste("year", i, sep=""), 
                                read.csv(
                                          paste("year", i,".csv", sep=""), 
                                          stringsAsFactors=TRUE)
                              )
                        }
      

      感谢您的回复。

      【讨论】:

        【解决方案3】:

        你真的还不够努力......但这里有一些指针

        l=list()
        for(i in 1:50){
          name=""
          if(i<10){
            name=paste("year0",i,sep="")
          } else {
            name=paste("year",i,sep="")
          }
          filename=paste(name,".csv" ,sep="") 
          # your file reading stuff here      
        
          l[[name]]$stateA="the thing from the file" # use [[ to create a column to the list l 
        }
        

        这将产生一个列表 l 其中有 50 个列表,每个列表都有 stateA、stateB 等。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-10-10
          • 2020-01-25
          • 1970-01-01
          • 2021-04-23
          • 1970-01-01
          • 2016-01-01
          • 1970-01-01
          相关资源
          最近更新 更多