У меня есть корреляционная матрица между двумя наборами переменных. Я хочу найти переменную B, которая имеет максимальную корреляцию с каждым из As
> B = data.frame('B1' = c(3,3,5), 'B2' = c(2,7,8))
> A = data.frame('A1' = c(1,2,3), 'A2' = c(4,2,6))
> corr_matrix = cor(A,B)
> corr_matrix
B1 B2
A1 0.8660254 0.9332565
A2 0.8660254 0.1555428
я бегу
> temp = apply(corr_matrix,1,which.max)
> temp
A1 A2
2 1
> names(B)[temp]
[1] "B2" "B1"
И получить хороший вектор того, что мне нужно. Вот улов. Если моя матрица выглядит так
corr_matrix
B1 B2 B3
A1 NA NA NA
A2 0.3986434 NA 0.2807630
A3 -0.3568664 NA 0.6037172
A4 0.1974342 NA 0.6827092
apply(corr_matrix,1,which.max)
$A1
integer(0)
$A2
B1
1
$A3
B3
3
$A4
B3
3
Я получаю странную вложенную структуру, которую я не особо понимаю. Может кто-нибудь объяснить, что это за структура и почему она отличается от приведенного выше примера?
Я имею в виду, я был бы счастлив, если бы он выплюнул
A1 A2 A3 A4
NA 1 3 3
Наконец, я вижу ответ, который хочу (NA, B1, B3, B3), но как мне получить его в векторной форме?
Я вижу много потоков с применением NA +, но ни один из них, похоже, не работает для моей цели, поэтому я прошу прощения, если это дубликат чего-то, о чем я не знаю.