Решение
(mt %>% mcor(type = "pearson"))$P[2]
# [1] 0
Объяснение
Обратите внимание, что оба
mt %>% rcorr(., type = "pearson")
и
mt %>% rcorr(type = "pearson")
работает как положено. Проблема в том, что вы добавляете $
и [
ко второму объекту, которые в основном похожи на последующие вызовы функций. Например,
s <- function(x) c(1, 1 + x)
1 %>% s
# [1] 1 2
работает как положено, но
1 %>% s[1]
# Error in .[s, 1] : incorrect number of dimensions
не возвращает 1
, так как вместо этого мы пытаемся сделать что-то вроде s[1](1)
.
Теперь
1 %>% s(x = .)[1]
# Error in .[s(x = .), 1] : incorrect number of dimensions
так же, как ваш
mt %>% rcorr(., type = "pearson")$P[2]
# [1] NA NA
хитрее. Обратите внимание, что его можно переписать как
mt %>% `[`(`$`(rcorr(., type = "pearson"), "P"), 2)
# [1] NA NA
Итак, теперь становится ясно, что последний не работает, потому что в основном это
`[`(mt, `$`(rcorr(mt, type = "pearson"), "P"), 2)
# [1] NA NA
, который при расшифровке равен
mt[rcorr(mt, type = "pearson")$P, 2]
# [1] NA NA