Как вернуть только нужный вектор в функции which () - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть эта исходная матрица:

> fil
2 3 6 
1 1 1

> str(fil)
 Named num [1:3] 1 1 1
 - attr(*, "names")= chr [1:3] "2" "3" "6"

Когда я делаю это:

which(fil==min(fil,na.rm = TRUE))

Я вернул это

> which(fil==min(fil,na.rm = TRUE))
2 3 6 
1 2 3 

И я хотел, чтобы имена векторов были возвращены:

2 3 6

help:)

1 Ответ

0 голосов
/ 08 ноября 2018

Когда вы видите вывод, подобный приведенному в вопросе, вы должны подозревать, что верхний вектор - это имен вектора, напечатанного под ними. Ниже приведен фактический вектор, его значения, а не первая строка выходных данных.
Это подтверждается str

str(fil)
# Named num [1:3] 1 1 1
# - attr(*, "names")= chr [1:3] "2" "3" "6"

Он начинается с выражения Named num, поэтому это с именем числовой вектор.
Тогда есть строка attributes. Атрибут в вопросе "names". И есть функции для получения некоторых частых атрибутов, таких как атрибут "names".

fil <- c('2' = 1, '3' = 1, '6' = 1)

fil
#2 3 6 
#1 1 1

attributes(fil)
#$names
#[1] "2" "3" "6"

Есть два способа получить атрибут "names". Второй ярлык, который я буду использовать:

attr(fil, "names")
#[1] "2" "3" "6"

names(fil)
#[1] "2" "3" "6"

Теперь, чтобы ответить на вопрос, просто задайте имена, соответствующие минимуму вектора fil.

names(fil)[which(fil==min(fil,na.rm = TRUE))]
#[1] "2" "3" "6"
...