首页 > 解决方案 > 如何将函数的输出打印为向量?

问题描述

我必须创建一个名为 large 的函数,将 year1 和 year2 之间的闰年打印为向量。

所以这是我一直在使用的代码:

vast <- function(year1,year2) {
  year <- year1
  for(year in year1:year2) {
    if(((year%%4==0)&(year%%100!= 0))|(year%%400==0))
    vast <- print(year)
  }
}

当我使用巨大的(2000,2010)时,它应该将(2000,2004,2008)作为可以保存到x中的向量,但我得到:

x <- vast(2000,2010)
[1] 2000
[1] 2004
[1] 2008
x
NULL

所以 x 是空的。我觉得很愚蠢,但我就是想不通。

标签: rfunctionif-statement

解决方案


您需要在函数末尾返回值。您可以显式使用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)如果要打印年份,可以在函数中添加语句。


推荐阅读