楼主: kiotoqq
4573 9

[问答] 怎样用function来显示是否是闰年 [推广有奖]

  • 0关注
  • 0粉丝

本科生

22%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
488 点
帖子
47
精华
0
在线时间
61 小时
注册时间
2010-12-16
最后登录
2014-10-28

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我需要个function来检验末年是否是闰年。开头这样:
  1. leapyear<-function(x){}
复制代码
闰年这里的定义是:
如果那一年可以整除4(比如2004),2月就有29天
如果那一年不能整除100
如果那一年可以整除400

如果x<1,这个function就要return “error”。我不大懂这个条件的意思,可否请大师解释下?

我写的function是这样的:
  1. install.packages("lubridate")
复制代码

不知道对不对,但是检验的时候显示ymd找不到。。。。

请各位大师帮帮忙!小妹感激不尽!
  1. leapyear<- function(dates, years_to_add)
  2. {
  3.   if(!require(lubridate)) stop("install lubridate")
  4.   if(years_to_add > floor(years_to_add)) stop("error")
  5.   
  6.   new <- dates + years(years_to_add)
  7.   new[
  8.     leap_year(year(dates)) &
  9.       !leap_year(year(dates) + years_to_add) &
  10.       month(dates) == 2 &
  11.       day(dates) == 29
  12.     ] <- NA
  13.   new_dates
  14. }

  15. dates <- ymd(c("2004-2-28", "2004-2-29"))
复制代码

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:function CTI Fun TIO UNC function

沙发
410234198 发表于 2013-8-1 09:33:04 |只看作者 |坛友微信交流群
妹子,你忘记加载包了。所以ymd函数找不到。
library(lubridate)

那个函数是在看不懂,也存在未知变量,如new_dates.

自己写了个。
a<-function(x){
date<-as.POSIXct(x,format = "%Y-%m-%d", tz = "UTC")
if(as.numeric(format(date, "%Y"))%%400==0) print("YES, Leap year.")
else if(as.numeric(format(date, "%Y"))%%100==0) print("NO.")
else if(as.numeric(format(date, "%Y"))%%4==0) print ("YES, Leap year.")
else print("NO.")
}

a("2013-8-1")
#[1] "NO."

使用道具

藤椅
kiotoqq 发表于 2013-8-1 16:48:45 |只看作者 |坛友微信交流群
410234198 发表于 2013-8-1 09:33
妹子,你忘记加载包了。所以ymd函数找不到。
library(lubridate)
啊,我可真够笨的。。。。那那个x<1是什么意思呢?

使用道具

板凳
kiotoqq 发表于 2013-8-1 16:48:48 |只看作者 |坛友微信交流群
410234198 发表于 2013-8-1 09:33
妹子,你忘记加载包了。所以ymd函数找不到。
library(lubridate)
啊,我可真够笨的。。。。那那个x<1是什么意思呢?

使用道具

报纸
kiotoqq 发表于 2013-8-1 16:48:52 |只看作者 |坛友微信交流群
410234198 发表于 2013-8-1 09:33
妹子,你忘记加载包了。所以ymd函数找不到。
library(lubridate)
啊,我可真够笨的。。。。那那个x<1是什么意思呢?

使用道具

地板
kiotoqq 发表于 2013-8-1 16:48:54 |只看作者 |坛友微信交流群
410234198 发表于 2013-8-1 09:33
妹子,你忘记加载包了。所以ymd函数找不到。
library(lubridate)
啊,我可真够笨的。。。。那那个x<1是什么意思呢?

使用道具

7
410234198 发表于 2013-8-1 17:00:47 |只看作者 |坛友微信交流群
kiotoqq 发表于 2013-8-1 16:48
啊,我可真够笨的。。。。那那个x
你的函数了有这个吗?

使用道具

8
kiotoqq 发表于 2013-8-1 18:33:24 |只看作者 |坛友微信交流群
410234198 发表于 2013-8-1 17:00
你的函数了有这个吗?
x就是代表哪一年的嘛,比如2004,但是x<1是什么意思呢

使用道具

9
410234198 发表于 2013-8-2 09:42:53 |只看作者 |坛友微信交流群
kiotoqq 发表于 2013-8-1 18:33
x就是代表哪一年的嘛,比如2004,但是x
既然是年份,当然不能小于1了。要不然没什么意义。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
kiotoqq + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

10
kiotoqq 发表于 2013-8-3 04:33:14 |只看作者 |坛友微信交流群
410234198 发表于 2013-8-2 09:42
既然是年份,当然不能小于1了。要不然没什么意义。
太谢谢你啦!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 14:45