我对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有关。发生了什么,我该如何避免呢?
答案 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"