楼主: dhs4402
2398 3

[问答] 请教R中if语句的逻辑判断语句出错,有代码。 [推广有奖]

  • 0关注
  • 0粉丝

小学生

7%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.1500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
43 点
帖子
2
精华
0
在线时间
7 小时
注册时间
2017-2-22
最后登录
2024-6-13

楼主
dhs4402 发表于 2017-7-3 09:08:20 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
for(i in 3:length(date)+1) {

  month_i<-as.numeric(month(date[i]))
  if(month_i==3) diffmonth[i]<-sumtotal[i-1]
  else diffmonth[i]<-sumtotal[i-1]-sumtotal[i-2]

}

我这里date是一个储存了日期的向量,讯婚礼要做的就是,判断datep[i]月份是不是为3,如果是3的话,diffmonth[i-1]采取不同的赋值。但程序总是报错:
Error in if (month_i == 3) { : missing value where TRUE/FALSE needed

比如
> date
[1] "2015-12-31" "2016-02-29" "2016-03-31" "2016-04-30" "2016-05-31" "2016-06-30" "2016-07-31" "2016-08-31" "2016-09-30"
[10] "2016-10-31" "2016-11-30" "2016-12-31" "2017-02-28" "2017-03-31" "2017-04-30" "2017-05-31"

> diffmonth
[1] 2046.312 2917.064       NA 1340.971 1537.071 2082.445 2305.795 1665.273 1755.292 1994.158 1956.122 2172.993 2979.521
[14] 2373.737 1408.300 1745.548

为什么2017-03对应的计算就正常,而第三个元素2016-03就是NA呢?

二维码

扫码加我 拉你入群

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

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

关键词:length month date leng mont R语言

沙发
dhs4402 发表于 2017-7-3 09:21:16
真心求教!

藤椅
igs816 在职认证  发表于 2017-7-3 09:46:52
month(date[i]) 哪有month这个函数(如果你用了相关包,那么去查相关包的手册),正确的拼写 months()
比较好的做法
1,你的date是日期格式的,那么用format(date[i],"%m"),再转成数字
2,不清楚date是日期还是字符串,那么用substr(date[i],6,7),再转成数字

板凳
cheetahfly 在职认证  发表于 2017-7-4 07:57:29
3:length(date)+1这一句你应该是想要3:(length(date)+1),否则,i是从4开始循环的,diffmonth[3]自然没有结果。
另外当i为length(date)+1时,date[i]为NA,month_i同样为NA,所以会报错:Error in if (month_i == 3) { : missing value where TRUE/FALSE needed

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-30 16:30