【发布时间】:2023-01-10 01:41:11
【问题描述】:
我有以下数据框:
Row Repro Number2
1 1 EWC
2 NA LWY
3 7 EWS
4 NA LWC
5 NA EWC
6 NA LWC
7 3 EWY
8 NA LW2Y
9 NA Unknown
10 NA LWC
11 1 EWC
12 NA LWY
13 NA EWY
14 NA LWY
15 NA Unknown
16 NA LWC
在此数据框上,我使用以下循环:
for (i in 1:nrow(df3)) {
if(df3$Number2[i+1]=="Unknown" & is.na(df3$Repro[i])) {
df3$Number2[i]="Unknown"
} else{
df3$Number2[i]==df3$Number2[i]
}
}
当循环确实运行时,我在最后收到一个错误代码,并且数据框最终看起来不像我想要的结果。
我的问题是,虽然代码正在执行其预期目的(如果 number2 列中的值也是“未知”并且关联的 Repro 值为 NA,则将 number2 列中的值替换为“未知”),它只是用“最初在数据帧中的未知”值。我希望它也考虑到添加的新“Unknowns”并执行循环条件。
这是错误代码:
Error in if (df3$Number2[i + 1] == "Unknown" & is.na(df3$Repro[i])) { :
missing value where TRUE/FALSE needed
这是运行循环后的数据框。我添加了另一个名为“Number2.Correct”的列,显示了我希望 Number2 列的实际外观。问题出在第 12 行和第 13 行 - 这些应该分别是“Unknowns”而不是“LWY”和“EWY”。
Repro Number2 Number2.Correct
1 1 EWC EWC
2 NA LWY LWY
3 7 EWS EWS
4 NA LWC LWC
5 NA EWC EWC
6 NA LWC LWC
7 3 EWY EWY
8 NA Unknown Unknown
9 NA Unknown Unknown
10 NA LWC LWC
11 1 EWC EWC
12 NA LWY Unknown
13 NA EWY Unknown
14 NA Unknown Unknown
15 NA Unknown Unknown
16 NA LWC LEW
最后,我有两个问题:
- 如何更改我的代码以获得我想要的结果?
- 为什么会出现错误代码,它是否对问题负部分责任?
【问题讨论】:
标签: r loops if-statement