【发布时间】:2019-11-30 13:32:03
【问题描述】:
我有一个这样的数据框(df):
Rif dd A A A A A B B B B B C C C C C
a1 10 5 8 10 2 6 9 6 5 7 9 1 5 6 4 5
b1 20 12 7 1 5 9 10 5 3 8 7 3 6 1 9 8
c1 100 11 6 8 1 14 1 11 9 3 6 10 8 13 8 4
d1 70 4 3 7 8 11 19 2 6 7 1 20 18 7 10 7
我有一个向量
rif <- c(0, 15, 50, 90, 110)
我想在 df 中添加一个列,如果 dd(i) >= rif(i-1) & dd(i)
Rif dd A A A A A B B B B B C C C C C V1
a1 10 5 8 10 2 6 9 6 5 7 9 1 5 6 4 5 8
b1 20 12 7 1 5 9 10 5 3 8 7 3 6 1 9 8 1
c1 100 1 6 8 1 14 1 11 9 3 6 10 8 13 8 4 14
d1 70 4 3 7 8 11 19 2 6 7 1 20 18 7 10 7 8
对于 Bs 和 Cs 列,V2 和 V3 也应该这样做。
ref <- c(0, 15, 50, 90, 110)
for (i in 2:length(ref)) {
for (j in 1:nrow(df)) {
if (df$dd >= ref[i-1] && df$dd< ref[i]) {
df[,"V1"] <- df[j,i]
}
}
}
我收到以下错误:
Error in if (..) :
missing value where TRUE/FALSE needed
可能 if 命令不是正确的。 你能帮帮我吗?
【问题讨论】:
-
在外循环的第一次迭代中,您执行
ref[1-1]。零子集给出一个空向量。将其与使用&&的逻辑值组合得到NA。
标签: r for-loop if-statement select element