我必须创建一个名为great的函数,以打印出year1和year2之间的leap年作为矢量。
这是我一直在使用的代码:
vast <- function(year1,year2) {
year <- year1
for(year in year1:year2) {
if(((year%%4==0)&(year%%100!= 0))|(year%%400==0))
vast <- print(year)
}
}
当我使用broad(2000,2010)时,它应该给出(2000,2004,2008)作为可以保存到x中的向量,但我得到:
x <- vast(2000,2010)
[1] 2000
[1] 2004
[1] 2008
x
NULL
因此x为空。我觉得很愚蠢,但我无法弄清楚。
答案 0 :(得分:1)
您需要在函数末尾返回值。您可以显式使用return
来执行此操作,否则将自动返回函数的最后一行。
比较运算符也被矢量化,因此您可以
vast <- function(year1,year2){
year <- year1 : year2
leap_year <- year[(year %%4 == 0 & year %% 100 != 0) | (year %% 400 == 0)]
return(leap_year)
}
然后致电vast
x <- vast(2000,2010)
x
#[1] 2000 2004 2008
如果要打印年份,可以在函数中添加print(leap_year)
语句。
答案 1 :(得分:1)
如果要从函数中获取值,则必须使用return()函数。这是您的代码的可能解决方案:
vast <- function(year1,year2){
vast <- c()
year <- year1
for(year in year1:year2){
if(((year%%4==0)&(year%%100!= 0))|(year%%400==0)){
vast <- c(vast, year)
}
}
return(vast)
}
x <- vast(2000,2010)
x