【发布时间】:2014-06-06 01:48:58
【问题描述】:
我有一个数据框,看起来像这样
site trap.number species dist.to.forest
1 1 5850 NA
2 1 4851 bridelia 0
3 1 4852 NA
4 1 4853 NA
5 1 4854 NA
6 1 4855 NA
我想做的是根据 trap.number 的值填写变量 dist.to.forest 的值。我可以使用
一次执行此操作dat1$dist.to.forest[dat1$trap.number == 4851]<- 0
但是有很多距离森林 0 米的陷阱,还有很多 10 米等的陷阱,所以我想快速将它们全部填满,我知道陷阱的数量和距离,我尝试使用这个:
dat1$dist.to.forest[dat1$trap.number == c(4851, 4873, 4881, 4896, 4915)] <- 0
虽然实际的陷阱编号列表要长得多,但我只是在此处将其缩短以适应屏幕,但收到一个错误,即较长的对象不是较短对象的倍数。
所以如果有人愿意回答,我有两个问题,第一个,在我对 R 的(有限)理解中,我认为数字 0 会被“回收”填充到 dist.to.forest 值的每一行trap.number 的值与我指定的列表中的一个值相同,但它没有,如果有人愿意解释为什么这不是考虑它的正确方法,那会很好,其次你能告诉我正确执行此操作的代码。非常感谢提前
【问题讨论】:
-
尝试
%in%而不是==。虽然它仍然是一条红色消息,但那是警告,而不是错误。 -
@RichardScriven 谢谢你的回复
标签: r variable-assignment subset