Выбор R-ячейки с помощью apply - PullRequest
2 голосов
/ 02 апреля 2019

Я пытаюсь выбрать конкретную ячейку из матрицы (данных) и изменить значение на 1

я получил эти 2 вектора

data <- matrix(0,300,300)
X <- c(1,5,87,987,67)
Y <- c(5,7,12,456,99)

x1 и y1 (т.е. 1,5) указывают позицию, которую я хочу выбрать в моей матрице

Я не хочу выбирать (x1, y2)

Я сделал то, что хочу сделать:

for (i in 1:length(x)){
  data[x[i],y[i]]<-1
}


Я почти уверен, что могу сделать то же самое с apply, который может работать быстрее

Спасибо за вашу помощь

1 Ответ

2 голосов
/ 02 апреля 2019

cbind X и Y и присвоить значение

data[cbind(X, Y)]  <- 1

#     [,1] [,2] [,3] [,4] [,5]
#[1,]    0    1    0    0    0
#[2,]    0    0    0    0    0
#[3,]    0    0    1    0    0
#[4,]    0    0    0    1    0
#[5,]    0    0    0    0    0

Данные

Использование меньшего набора данных

X <- c(1,3,4)
Y <- c(2,3,4)
data <- matrix(0, ncol = 5, nrow = 5)

data
#     [,1] [,2] [,3] [,4] [,5]
#[1,]    0    0    0    0    0
#[2,]    0    0    0    0    0
#[3,]    0    0    0    0    0
#[4,]    0    0    0    0    0
#[5,]    0    0    0    0    0
...