我的问题是关于通过逻辑选择填充值。我有一个矩阵
> mymat
test
sample 1 2 3 4 5
1sample FALSE FALSE TRUE FALSE FALSE
2sample FALSE FALSE TRUE TRUE FALSE
3sample TRUE FALSE FALSE FALSE FALSE
4sample FALSE FALSE FALSE FALSE FALSE
5sample FALSE FALSE FALSE FALSE FALSE
和值列表
> mylist
[[1]]
[1] "a"
[[2]]
[1] "b"
[[3]]
[1] "c"
[[4]]
[1] "d"
[[5]]
[1] "e"
我需要填充矩阵(或创建新的数据结构),其中第 n 个列表中的元素与矩阵中的第 n 列匹配的次数与行值为 TRUE 的次数相同,因此结果数据将如下所示:
> mymat
test
sample 1 2 3 4 5
1sample <NA> <NA> c <NA> <NA>
2sample <NA> <NA> c d <NA>
3sample a <NA> <NA> <NA> <NA>
4sample <NA> <NA> <NA> <NA> <NA>
5sample <NA> <NA> <NA> <NA> <NA>
这是一个使用选项 replace
dim<-`(replace(unlist(mylist)[col(mymat)], !mymat, NA), dim(mymat))
# [,1] [,2] [,3] [,4] [,5]
#[1,] NA NA "c" NA NA
#[2,] NA NA "c" "d" NA
#[3,] "a" NA NA NA NA
#[4,] NA NA NA NA NA
#[5,] NA NA NA NA NA
或者如果我们需要改变 mymat
mymat[] <- replace(unlist(mylist)[col(mymat)], !mymat, NA)
mymat
# test
#sample 1 2 3 4 5
# 1sample NA NA "c" NA NA
# 2sample NA NA "c" "d" NA
# 3sample "a" NA NA NA NA
# 4sample NA NA NA NA NA
# 5sample NA NA NA NA NA
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句