Я определяю 2 числовых вектора следующим образом:
> x <- c(1,2)
> y <- c(1,2)
Теперь я хотел бы иметь матрицу 2x2, заполненную, например. добавление элементов x
и y
на основе их индексов, поэтому конечный результат должен выглядеть так:
[,1] [,2]
[1,] 2 3
[2,] 3 4
Добиться этого с помощью вложенных циклов for тривиально, но это не сработает на очень больших наборах данных. Попытка векторизовать это, например.
> z <- matrix(nrow=2, ncol=2)
> z[x,y] <- x + y
терпит неудачу, потому что оператор +
добавляет x
и y
в качестве векторов перед выполнением присваивания z
. Использование явной подписки с индексами i
и j
также не работает:
> i <- 1:2
> j <- 1:2
> z[i,j] <- x[i] + y[j]
> z
[,1] [,2]
[1,] 2 2
[2,] 4 4
Есть ли способ добиться того, что я хочу, используя векторизацию/подписку, или я ограничен вложенными циклами for или одной из функций применения?