我是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)
...
如果有人可以提供帮助,那就太棒了。谢谢!
答案 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等。