запись al oop в R с функцией - PullRequest
1 голос
/ 07 января 2020

Научите меня, как создать простой l oop для вычисления следующего уравнения:

v0 = v * exp (k * d)

, где v - это кадр данных, содержащий 17631 строк х 15 переменных. Для каждого v (строки) он умножается на exp (k * d).

, где k - вектор столбца, содержащий 15 констант скорости, по одной для каждой переменной. где d - вектор строк, содержащий 17631 строк.

От всего сердца спасибо!

1 Ответ

1 голос
/ 07 января 2020

Если вам нужны циклы, вы можете сделать это, как показано ниже:

# for loop by row
for (i in seq(nrow(v))) {
  v0 <- rbind(v0,v[i,]*exp(d*k[i]))
}

# for loop by column
for (j in seq(ncol(v))) {
  v0 <- cbind(v0,v[,j]*exp(d*k))
} 

Однако наиболее эффективным способом является использование матрицы для манипулирования данными. Вместо использования для l oop, возможно, вы можете попробовать код ниже

# matrix approach
v0 <- as.matrix(v)*exp(outer(d,k,"*"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...