7

RI には次のものがありますmatrix(各行は、同じサンプル データから生成されたブートストラップ 95% 信頼区間を表します)。

       low   high
[1,]   22.2  25.5
[2,]   23.1  25.9
[3,]   23.4  26.1
...

データの真の母集団平均は 23.3 です。したがって、最初の 2 つは真の平均を含みますが、3 番目は含みません。

R では、データの真の母集団平均がその特定の間隔内にあるかどうかをそれぞれチェックしてから、間隔に真の平均が含まれているかどうかの高さの列ベクトルを返し、そうでない場合は、forループiを実行したいと考えています。nrow(matrix)inrow(matrix)TRUEFALSE

どうすればこれを行うことができますか?

4

4 に答える 4

17

不等式演算子を行列の列に直接使用するだけです。だから私は単純にやったでしょう:

> cbind( mat[,1] <= 23.3 & mat[,2] >= 23.3 )

      [,1]
[1,]  TRUE
[2,]  TRUE
[3,] FALSE
于 2012-03-24T23:21:01.813 に答える
8
 mat <- matrix(c(22.2,  25.5,
    23.1 , 25.9,
    23.4,  26.1), ncol=2, byrow=TRUE)
 trueval <- 23.3
 apply(mat, 1, findInterval, x=trueval)
#[1] 1 1 0
 which( apply(mat, 1, findInterval, x=trueval) == 1)
#[1] 1 2
  apply(mat, 1, findInterval, x=trueval) == 1
#[1]  TRUE  TRUE FALSE
于 2012-03-24T22:48:50.170 に答える
7

記録のために、これはdata.tableパッケージを使用betweenして簡単に実現することもできます。

data.table::between(23.3, mat[, 1], mat[, 2])
## [1]  TRUE  TRUE FALSE
于 2016-12-15T10:31:39.353 に答える
0

データがゼロに集中している場合、それを行う簡単な方法があります。

Zero.included = apply(mat,1,function(x){prod(sign(x))<=0})

マトリックスが平均を中心としていない場合は、追加するだけですnew.mat=mat-23.3

于 2015-10-20T10:11:06.603 に答える