在R中循环(可能太简单了?)

时间:2014-07-22 10:54:35

标签: r loops

我是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)

...

如果有人可以提供帮助,那就太棒了。谢谢!

3 个答案:

答案 0 :(得分: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)

现在你只需将各个部分联合起来。

答案 1 :(得分:0)

好的,我找到了答案:

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

感谢您的回复。

答案 2 :(得分:-1)

你真的还没有努力尝试......但这里有一些指示

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等。