R-将值输入到列的下一行

时间:2018-08-03 19:11:06

标签: r dataframe

我有一个看起来像这样的数据框:

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中设置循环或函数以完成此任务。任何帮助表示赞赏。谢谢。

2 个答案:

答案 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