任何人都可以告诉我,我的for循环在r中只运行一次吗?该脚本只是尝试为大约5个主要文件中的大约200个子文件的列表创建csv文件。这是我的代码:
ImpactGrid<- function(num, condition, CONDITION){
#Set working directiory
for(i in num){
if(i <10){
filename <- paste("./EOBS DATA/ECA_blend_", condition, "/" ,CONDITION, "_STAID00000", i, ".txt", sep = "")
}
if(i >=10 & i < 100){
filename <- paste("./EOBS DATA/ECA_blend_", condition, "/" ,CONDITION, "_STAID0000", i, ".txt", sep = "")
}
if(i>= 100){
filename <- paste("./EOBS DATA/ECA_blend_", condition, "/" ,CONDITION, "_STAID000", i, ".txt", sep = "")
}
con <- file(filename, "r")
data <- readLines(con)
close(con)
q <- data[21:length(data)] # removes non data before the data begins
Impactdata <- read.table(text = q, sep=',',fill=TRUE,colClasses='character',header = TRUE )
Savename <- paste("./EOBS DATA/",condition, "_csv_data/", condition,i, ".csv", sep = "")
write.csv(Impactdata, Savename)
x <- read.csv(paste("./EOBS DATA/",condition, "_csv_data/", condition,i, ".csv", sep = ""))
return(head(x))
}
}
答案 0 :(得分:3)
如果您尝试从1到num
,则代码为:
for(i in 1:num)
for
循环遍历向量,但num
的长度为1,因此它只迭代一次。
您还需要从循环体中删除return
语句。否则,它将在第一次返回时退出。
答案 1 :(得分:1)
虽然我认为1:num是一个很好的答案并且可能是一个问题,但看起来for循环包含了包括最后一个return()语句在内的所有内容。因此,即使num是一个向量,它只会循环遍历所有代码,并在一个循环后从函数返回()。