我有36个文件,其中每个文件包含特定年份的一个月的数据,因此我总共有36/12 = 3年。 1到12的文件是2013年,2012年是13到24,2011年是25到36.我正在尝试创建一个以一年或几年为参数的函数,并返回相应的文件编号间隔。我的尝试:
g<-function(year){
lis<-vector()
for( i in year){
if(year==2013){lis<-append(lis,1:12)}
if(year==2012){lis<-append(lis,13:24)}
if(year==2011){lis<-append(lis,24:36)}
}
return(lis)
}
单身年我的功能很好。例如:
> g(2013)
[1] 1 2 3 4 5 6 7 8 9 10 11 12
当我致电g(2013:2012)
或g(2012:2013)
时,我想要以下输出:
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
我认为if
语句会起作用,但它不起作用。如果您需要任何澄清,请告诉我。谢谢你的帮助。
答案 0 :(得分:2)
在for循环中,实际上并没有使用循环的单个值,而是每次都与整个year
向量进行比较。使用单个值可以解决您的紧急问题:
g<-function(year){
lis<-vector()
for( i in year){
if(i == 2013){lis<-append(lis,1:12)}
if(i == 2012){lis<-append(lis,13:24)}
if(i == 2011){lis<-append(lis,24:36)}
}
return(lis)
}
或者你可以在没有for循环的情况下做同样的事情:
g2 <-function(year){
lis<-vector()
if (2013 %in% year) {lis <- append(lis, 1:12)}
if (2012 %in% year) {lis <- append(lis, 13:24)}
if (2011 %in% year) {lis <- append(lis, 24:36)}
return(lis)
}