Как установить номер столбца, над которым работает функция применения, чтобы использовать этот номер для извлечения переменной, индексированной по этому номеру? - PullRequest
0 голосов
/ 17 мая 2019

Я конвертирую свои циклы for в R для модели с несколькими входными наборами данных. В цикле for я использую текущее значение цикла для извлечения значений из других наборов данных. Я пытаюсь повторить это с помощью функции apply (над столбцами в наборе данных), однако я пытаюсь установить индекс функции apply для извлечения соответствующих переменных из других данных

Функция apply ссылается на столбец с помощью переменной в функции, что нормально, и я попытался использовать оба colname (после того, как назвал мои различные столбцы по номеру), но не испытал никакой радости. Ниже приведен пример набора данных и цикла с тем, чего я хотел бы достичь (несколько упрощенно). Длина векторов и количество столбцов в табличном наборе данных всегда будут равны.

iteration<-1:3
df <- data.frame("column1" = 6:10, "column2" = 12:16, "column3" = 31:35)
variable1<-rnorm(3,mean = 25)
variable2<-rnorm(3, mean = 0.21)
outcome<-numeric()
for (i in iteration) {
  intermediate<-(mean(df[,i])*variable1[i])^variable2[i]
  outcome<-c(outcome,intermediate)
}
outcome

Ожидаемые результаты - результат выше ... пробуем примениться

То, что я себе представляю, таково:

apply(df, 2, function(x) (mean(x)*variable1[colnumber(x)])^variable2[colnumber(x)]

или, возможно,

apply(df, 2, function(x) (mean(x)*variable1[x])^variable2[x])

но эти два, очевидно, не работают.

1 Ответ

0 голосов
/ 17 мая 2019

пользователь первый раз, поэтому извиняюсь за любые проблемы с этикетом, но нашел решение моей собственной проблемы с помощью пакета purrr, но, возможно, это поможет кому-то еще

pmap(list(df, variable1, variable2), function(df, variable1, variable2) (mean(df)*variable1)^variable2)
...