R заполнить матрицу без использования цикла - PullRequest
0 голосов
/ 10 марта 2019

Привет всем, я ищу несколько советов и приемов кодирования. У меня есть матрица 10x10, как это:

mat <- matrix(NA, nrow = 10, ncol = 10)

и функция, которая принимает два числа и возвращает простой скаляр:

fct <- function(x1, x2){
return(x1 * x2)
}

Моя функция немного сложнее, но это только для иллюстрации.

Я бы хотел заполнить матричный мат, применив функцию fct к двум векторам, скажем:

x1 <- c(1:10)
x2 <- c(1:10)

Я легко могу сделать это с помощью цикла, но мне было интересно, если кто-нибудь знает лучший способ, может быть, используя mapply / Map.

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

1 Ответ

0 голосов
/ 11 марта 2019

Векторизация функции выглядит так:

fct <- function(x1, x2){
out <- numeric(length = length(x1))
for(i in seq_along(x1)) {
    out[i] <- x1[i] * x2[i]
 }
return(out)
}

Затем применив внешнее:

outer(x1, x2, fct)

сделает свое дело!

Спасибо!

...