R: Выбор вектора значений из матрицы или кадра данных с векторами индексов x и y - PullRequest
1 голос
/ 29 марта 2020

Я пытаюсь выбрать из матрицы или из кадра данных или Tibble или аналогичный. Я могу написать функцию, которая делает то, что я хочу, но мне было интересно, было ли что-то подобное встроенным.

Моя функция выглядит так:

matrixselect <- function(m, x, y, r=nrow(m)){ 
   if(! is.matrix(m)){m <- as.matrix(m)} 
   m[x + r * (y - 1)] 
   }  

и, например, я хочу найти c(mydata[1,3], mydata[2,1], mydata[4,3])

mydata <- data.frame(LETTERS[1:4], LETTERS[5:8], LETTERS[9:12])
mydata
#   LETTERS.1.4. LETTERS.5.8. LETTERS.9.12.
# 1            A            E             I
# 2            B            F             J
# 3            C            G             K
# 4            D            H             L
mydata[c(1,2,4), c(3,1,3)]                     # gives more than I want:
#    LETTERS.9.12. LETTERS.1.4. LETTERS.9.12..1
# 1             I            A               I
# 2             J            B               J
# 4             L            D               L
matrixselect(mydata, c(1,2,4), c(3,1,3))       # gives what I want:
# [1] "I" "B" "L"

1 Ответ

1 голос
/ 29 марта 2020

Мы можем использовать индекс строки / столбца как matrix от cbind ing

mydata[cbind(c(1, 2, 4), c(3, 1, 3))]
#[1] "I" "B" "L"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...