我是R的新手,刚刚编写了一个代码,工作正常。我想循环这个,以便它也适用于其他相同的41个data.frames。
输入文件名为“weatherdata .. + UNIQUE NUMBER ”,输出文件我想称之为“df + UNIQUE NUMBER”。
我编写的代码现在仅适用于文件weatherdata .. 5341 。我可以按CTRL + F并替换所有5341并运行这很容易。但我可以用某种循环来做这件事吗?或者你有一个很好的教程,可以教我如何做到这一点?我看过一个关于for循环的教程,但我无法弄清楚如何将它应用于我的代码 下面提供了一小部分代码!我认为如果循环适用于下面给出的代码,它也适用于其余的代码。所有帮助赞赏! :)
#List of part of the datafiles just 4 out of 42 files
list.dat <- list(weatherdata..5341,weatherdata..5344, weatherdata..5347,
weatherdata..5350)
# add colum with date(month) as a decimal number
weatherdata..5341$Month <- format( as.Date(weatherdata..5341$Date) , "%m")
# convert to date if not already
weatherdata..5341$Date <- as.Date(weatherdata..5341$Date, "%d-%m-%Y")
#Try rename columns
colnames(weatherdata..5341)[colnames(weatherdata..5341)=="Max.Temperature"] <- "TMPMX"
# store as a vector
v1 <- unlist(Tot1)
# store in outputfile dataframe
Df5341<- as.data.frame.list(v1)
答案 0 :(得分:0)
您可以创建所有数据框的列表,然后使用sapply
遍历每个数据框。以下是示例代码:
> v1 <- list(data.frame(x = c(1,2), y = c('a', 'b')), data.frame(x = c(3,4), y = c('c', 'd')))
> v1
[[1]]
x y
1 1 a
2 2 b
[[2]]
x y
1 3 c
2 4 d
> sapply(v1 , function(x){(x$x <- x$x/4)})
[,1] [,2]
[1,] 0.25 0.75
[2,] 0.50 1.00
然后你可以替换函数内的内容。希望这会有所帮助。
答案 1 :(得分:0)
这样的事情应该有效:
## Assuming that your files are CSV files and are alone in the folder
Fnames <- list.files() # this pulls the names of all the files
# in your working directory
Data <- lapply(Fnames, read.csv)
for( i in 1:length(Data)){
# Put your code in here, replacing the Df names with Data[[i]]
# for example:
# add colum with date(month) as a decimal number
Data[[i]]$Month <- format( as.Date(Data[[i]]$Date) , "%m")
# convert to date if not already
Data[[i]]$Date <- as.Date(Data[[i]]$Date, "%d-%m-%Y")
#Try rename columns
colnames(Data[[i]])[colnames(Data[[i]])=="Max.Temperature"] <- "TMPMX"
# And so on..
}