我有一个看起来像这样的数据框:
V1 V2
10 5
11 15
12 NA
13 NA
V1是在外部文件中找到的已经生成的向量。 V2是将更新和更改的列。该数据帧存储在一个外部文件中,当调用R脚本时该文件将被读入。 R脚本还具有一个将生成新值的方程式。生成新值的代码:
value <- 10 + 4
这是一个简单的加法运算,将生成新值。该值将需要传递到V2列中,替换下一行(您看到的第一个NA),然后将其写入文件。假设R生成的值是14,它应该像这样:
V1 V2
10 5
11 15
12 14
13 NA
我无法在R中设置循环或函数以完成此任务。任何帮助表示赞赏。谢谢。
答案 0 :(得分:1)
使用匹配功能
df = read.table(text='V1 V2
10 5
11 15
12 NA
13 NA',header = T)
for (i in 4:5) {
value = 10 + i
df$V2[match(NA,df$V2)] = value
print(df$V2)
}
#[1] 5 15 14 NA
#[1] 5 15 14 15
答案 1 :(得分:1)
我们需要用which
获取NA的位置(以选择第一个NA元素),并将其包装在从is.na
导出的逻辑向量上并进行赋值
df$V2[which(is.na(df$V2))[1]] <- value