R - 过滤矩阵基于真/假向量

时间:2015-04-29 18:47:53

标签: r matrix vector

我有一个可以包含向量和矩阵的数据结构。我想基于一个真正的假列来过滤它。我无法弄清楚如何成功过滤它们。

result <- structure(list(aba = c(1, 2, 3, 4), beta = c("a", "b", "c", "d"), 
chi = structure(c(0.438148361863568, 0.889733991585672, 0.0910745360888541, 
0.0512442977633327, 0.812013201415539, 0.717306115897372, 0.995319503592327, 
0.758843480376527, 0.366544214077294, 0.706843026448041, 0.108310810523108, 
0.225777650484815, 0.831163870869204, 0.274351604515687, 0.323493955424055, 
0.351171918679029), .Dim = c(4L, 4L))), .Names = c("aba", "beta", "chi"))

> result
$aba
[1] 1 2 3 4

$beta
[1] "a" "b" "c" "d"

$chi
           [,1]      [,2]      [,3]      [,4]
[1,] 0.43814836 0.8120132 0.3665442 0.8311639
[2,] 0.88973399 0.7173061 0.7068430 0.2743516
[3,] 0.09107454 0.9953195 0.1083108 0.3234940
[4,] 0.05124430 0.7588435 0.2257777 0.3511719

tf <- c(T,F,T,T)

我想做的是像

> lapply(result,function(x) {ifelse(tf,x,NA)})
$aba
[1]  1 NA  3  4

$beta
[1] "a" NA  "c" "d"

$chi
[1] 0.43814836         NA 0.09107454 0.05124430

但$ chi矩阵结构丢失了。

我期待的结果是

ifelse(matrix(tf,ncol=4,nrow=4),result$chi,NA)
           [,1]      [,2]      [,3]      [,4]
[1,] 0.43814836 0.8120132 0.3665442 0.8311639
[2,]         NA        NA        NA        NA
[3,] 0.09107454 0.9953195 0.1083108 0.3234940
[4,] 0.05124430 0.7588435 0.2257777 0.3511719

我遇到问题的挑战是如何将tf向量与数据相匹配。感觉我需要使用基于数据类型的条件来设置它,我想避免这种情况。感谢您的想法和答案。

0 个答案:

没有答案
相关问题