【发布时间】:2021-10-19 21:43:23
【问题描述】:
假设我有两个矩阵,data_matrix 包含我的数据,另一个 boolean_matrix 具有相同的结构,但只有 1 和 0,指定我想要获取的来自 data_matrix 的值。
它们看起来像这样:
> set.seed(42)
> data_matrix=matrix(runif(100,0,5), nrow=10)
> boolean_matrix=matrix(rbinom(100, 1, 0.5), nrow=10)
> colnames(data_matrix)=LETTERS[1:10]
> colnames(boolean_matrix)=LETTERS[1:10]
> head(data_matrix)
A B C D E F G
[1,] 4.574030 2.288709 4.5201569 3.68797809 1.8977962 1.6671361 3.3780364
[2,] 4.685377 3.595561 0.6935508 4.05527571 2.1788579 1.7337412 4.9140860
[3,] 1.430698 4.673361 4.9444586 1.94054141 0.1871552 1.9924271 3.7977213
[4,] 4.152238 1.277144 4.7333412 3.42584865 4.8676996 3.9234639 2.8324421
[5,] 3.208728 2.311464 0.4121878 0.01974169 2.1587562 0.1946825 4.2484486
[6,] 2.595480 4.700073 2.5710589 4.16458040 4.7878830 3.7439769 0.9473697
H I J
[1,] 0.2149440 2.908020 3.337132573
[2,] 0.7023955 0.789526 0.001194483
[3,] 1.0819271 1.795142 1.042849785
[4,] 2.3969928 3.228159 4.665170637
[5,] 0.9870517 3.879117 4.628223743
[6,] 3.5967792 2.818234 3.670471505
> head(boolean_matrix)
A B C D E F G H I J
[1,] 1 1 0 1 0 1 1 1 1 0
[2,] 0 1 0 1 0 0 1 0 1 1
[3,] 0 1 1 1 0 1 1 0 0 0
[4,] 0 0 1 1 1 0 0 0 0 0
[5,] 1 1 1 1 1 1 1 0 1 0
[6,] 1 1 0 1 1 1 0 0 1 0
我这里要做的很简单,我只想对data_matrix列运行简单的函数,比如max、min、length等。
> apply(data_matrix, 2, max)
A B C D E F G H
4.685377 4.891132 4.944459 4.533007 4.867700 3.923464 4.914086 3.596779
I J
3.879117 4.665171
> apply(data_matrix, 2, min)
A B C D E F
0.673332986 0.587436808 0.412187790 0.019741694 0.187155164 0.194682456
G H I J
0.947369677 0.007852771 0.428060325 0.001194483
> apply(data_matrix, 2, length)
A B C D E F G H I J
10 10 10 10 10 10 10 10 10 10
但是,我只想对 data_matrix 中 boolean_matrix 中具有 1 的那些值执行此操作...不知道如何将其传递给 apply 函数。
谢谢!
【问题讨论】: