用侧栏中的相应非NA值替换NA值

时间:2019-02-04 01:02:00

标签: r data.table

我有一个名为data.table的temp:

PID PID_Gen 
a   NA   
c   c1
b   NA
d   d1

以下内容评估PID_Gen是否为NULL,并在这种情况下分配PID的值。

temp$result <- future_sapply(temp$PID_Gen, 
                             FUN = function(x) if(is.na(x)) {temp$PID})

问题是它溢出了内存。

我可以使用其他替代方法吗?

2 个答案:

答案 0 :(得分:3)

这是我的方法:

temp <- read.table(text = "PID PID_Gen 
                   a   NA   
                   c   c1
                   b   NA
                   d   d1", header = TRUE, stringsAsFactors = FALSE)
temp$result <- ifelse(is.na(temp$PID_Gen), temp$PID, temp$PID_Gen)

答案 1 :(得分:2)

这是您想要的结果吗?

df <- read.table(text = "PID PID_Gen 
a   NA   
c   c1
b   NA
d   d1", header = TRUE, stringsAsFactors = FALSE)

df$PID_Gen[is.na(df$PID_Gen)] <- df$PID[is.na(df$PID_Gen)]

print(df)
#>   PID PID_Gen
#> 1   a       a
#> 2   c      c1
#> 3   b       b
#> 4   d      d1

reprex package(v0.2.1.9000)于2019-02-03创建