我的数据如下:
v1 v2 v3 v4 pred1 pred2
1 1908 5 10 2 10.000000 2.00000
2 1908 4 15 5 15.000000 5.00000
3 1908 8 14 4 14.000000 4.00000
4 1908 1 NA 9 11.230271 9.00000
5 1908 9 NA 14 9.942911 14.00000
6 1908 7 8 17 8.000000 17.00000
7 1908 6 NA 8 7.881931 8.00000
我想提取与其中具有NA值的列对应的preds
。也就是说,pred1
是使用v3
列获得的,我想提取值{{ 1}}和11.230271
以及9.942911
列中具有7.881931
值的NA
。
因此,我将得到类似v3
的内容,其中最后一个值11.230271, 9.942911, 7.881931, 7.08919
来自7.08919
,该值基于pred2
数据并具有v4
值NA
。
数据:
row12
答案 0 :(得分:1)
我们可以根据另一列进行过滤,subset
感兴趣的列
subset(data, is.na(v3), select = c("pred1", "pred2"))
如果我们需要'v3','v4'中相应的NA
元素的值
out <- Map(function(x, y) y[is.na(x)], data[3:4], data[5:6])
out
#$v3
#[1] 11.230271 9.942911 7.881931
#$v4
#[1] 7.08919
然后,通过vector
设置
unlist
获得
unlist(out, use.names = FALSE)
或使用map2
中的purrr
library(purrr)
map2(data[3:4], data[5:6], ~ keep(.y, is.na(.x)))