【发布时间】:2018-07-23 10:10:52
【问题描述】:
我有 2 个 R 数据框。
df1 <- data.frame(a = c(1, 2, NA), b = c(10, NA, 2), c = c(NA, NA, 1))
df2 <- data.frame(a = c(NA, NA, 3), b = c(NA, 5, NA), c = c(6, NA, NA))
df1 中的值是 NA 中的 df2,反之亦然。两个数据帧中的一些值都是NA。我想创建一个新的数据框,它的值来自 df1 和 df2,无论值在哪里,都不会丢失列名和行名。
我能想到的一个简单解决方案是使用for 循环。
df_merged <- df1
for(i in 1:nrow(df_merged)){
for(j in 1:ncol(df_merged)){
if(is.na(df_merged[i,j])){
df_merged[i,j] = df2[i,j]
}
}
}
最后,df_merged 就是这个
df_merged
a b c
1 1 10 6
2 2 5 NA
3 3 2 1
我知道for 循环在 R 中非常慢。有没有更好的解决方案?
【问题讨论】: