在子集化

时间:2015-06-17 23:45:32

标签: r matrix

我对R中的子集有疑问。说我有以下矩阵:

     Ch1.Amplitude Ch2.Amplitude
[1,]      6968.577      9637.309
[2,]     11903.564     11385.656
[3,]     13503.292      9928.314

     Ch1.Amplitude Ch2.Amplitude
[1,]     11903.564     11385.656
[2,]      2519.582      8042.450
[3,]      9878.749      5899.139

我想将第一个Matrix A的第2行与第二个Matrix B中的第1行匹配。但是,当我使用

访问该行时
matrixA[2, , drop=F]

这就是我得到的:

     Ch1.Amplitude Ch2.Amplitude
[1,]      11903.56      11385.66

如您所见,小数点后的第三个数字已被切断!很自然地,如果我使用match()在Matrix B中找到行,它将返回NA。 但是,当我查询多行时,不会发生这种情况。

MatrixA[c(1,2),]
     Ch1.Amplitude Ch2.Amplitude
[1,]      6968.577      9637.309
[2,]     11903.564     11385.656

所以我认为它与drop = F有关。发生了什么,我该如何避免呢?

1 个答案:

答案 0 :(得分:2)

实际上,这里没有错。这只是一个格式化问题。您可以轻松检查值是否受到影响:

> identical(matrixA[2, , drop=F], matrix(c(11903.564, 11385.656), nrow=1)
[1] TRUE

如果想要查看更多小数位,您可以使用选项(数字):

> options(digits=10)
> matrixA[2, , drop=F]
      [,1]      [,2]
[1,] 11903.564 11385.656

或格式:

> format(matrixA[2, , drop=F], nsmall=3)
     [,1]        [,2]       
[1,] "11903.564" "11385.656"