楼主: hejia89
19172 2

[实际应用] R语言 for 嵌套 if 提示 argument is of length zero 错误? [推广有奖]

  • 0关注
  • 0粉丝

高中生

7%

还不是VIP/贵宾

-

威望
0
论坛币
19 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
239 点
帖子
7
精华
0
在线时间
29 小时
注册时间
2017-11-18
最后登录
2020-12-25

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
在试图做一个产品路径的数据处理,逻辑是对同一个 id,'target' 字段取下一行的 ‘item’ 值,代码如下:

id <- c('1001','1001','1001','1002','1002','1003','1003','1003','1003')
item <- c('milk','bread','cake','milk','sugar','bread','cake','cafe','milk')
df1 <- data.frame(id, item, stringsAsFactors = F)
for (i in c(1:length(df1$id)-1)) {
  if (df1$id[i+1] == df1$id) df1$target <- df1$item[i+1]
  else (df1$target <- NA)
}

上述代码我贴个截图,因为发现发出来以后格式有点问题: Snipaste_2018-08-01_23-21-05.png

错误提示:
11.png


希望得到:
id          item        target
1001     milk         bread
1001     bread       cake
1001     cake         NA
1002     milk         sugar
1002     sugar       NA
1003     bread       cake
1003     cake         cafe
1003     cafe         milk
1003     milk          NA

请教各位大神,代码出错在哪,应该怎样得到如上结果?


二维码

扫码加我 拉你入群

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

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

关键词:产品路径 数据处理 r语言 for 产品路径

回帖推荐

nuomin 发表于2楼  查看完整内容

1:length(df1$id)-1的运行结果为0 1 2 3 4 5 6 7 8,R数组下标从1开始,if (df1$id == df1$id) 会出错
沙发
nuomin 发表于 2018-8-1 23:46:51 |只看作者 |坛友微信交流群
1:length(df1$id)-1的运行结果为0 1 2 3 4 5 6 7 8,R数组下标从1开始,if (df1$id[i+1] == df1$id[i]) 会出错
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

使用道具

藤椅
hejia89 发表于 2018-8-2 11:13:37 |只看作者 |坛友微信交流群
nuomin 发表于 2018-8-1 23:46
1:length(df1$id)-1的运行结果为0 1 2 3 4 5 6 7 8,R数组下标从1开始,if (df1$id == df1$id) 会出错
感谢提醒!检查了一下,用括号把 (length(df1$id)-1) 括起来了~变成1:(length(df1$id)-1), 这样结果就得到 1 2 3 4 5 6 7 8,避免了从 0 开始的报错了~~
十分感谢!

使用道具

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

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

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

GMT+8, 2024-5-18 02:14