Зацикливание или применение функций для запуска уравнения с различными переменными

Я пытаюсь сделать что-то, что, я уверен, действительно просто в R. Но я не могу понять это. Я хочу выполнить одно и то же уравнение 6 раз, меняя переменные внутри уравнения каждый раз. Мои данные примерно такие:

[#Rename my data
mydata <- BSC_OnlineSurvey_Salient.Beliefs
summary (mydata)
View(mydata)

##Descriptive stats
sapply(mydata, mean, na.rm = TRUE)
sumstats <- sapply(mydata, mean, na.rm = TRUE)
sumstats

#1st: Rename columns
colnames (mydata)
colnames(mydata)=c("ID", "Understands restocking", "Restocking will increase the No. of crabs", "Increasing the No. of crabs is...", "Restocking will result in more crabs to catch", "More crabs to catch is...", "Restocking will result in more fishers fishing for crabs", "More fishers fishing for crabs is...", "Resocking will result in no change in abundance of crabs", "No change in the abundance of crabs is...","Restocking will increase the fishing pressure on crabs", "Increasing the fishing pressure on crabs is", "Restocking will have an impact on the environment and other species", "Having an impact on the environment and other species is...", "Overall views on restocking") 
View(mydata)

#Replace Belief evaluation (very unlikely to very likely) from -3-3 to 0-6
Eval1 <- mydata$`Restocking will increase the No. of crabs`
...#Done for 6 "Eval"
Eval1
Eval1\[Eval1 == 3\] <- 6
Eval1\[Eval1 == 2\] <- 5
Eval1\[Eval1 == 1\] <- 4
Eval1\[Eval1 == 0\] <- 3
Eval1\[Eval1 == -3\] <- 0
Eval1\[Eval1 == -2\] <- 1
Eval1\[Eval1 == -1\] <- 2

...
Strength1 <- mydata$`Increasing the No. of crabs is...`
Strength2 <- mydata$`More crabs to catch is...`
Strength3 <- mydata$`More fishers fishing for crabs is...`
...#Done for 6 "Strength"][1]

Я не хочу писать 6 раз одно и то же простое уравнение. Я не могу понять, как это сделать, у меня просто есть небольшая идея, что он, вероятно, использует один из применений f(x) или делает цикл...

Мои данные` - это набор переменных, Eval(1,2,3...) в масштабе от -3 до 3; Сила (1,2,3,..) по шкале от 0 до 6

Я хочу сделать кросс-произведение для каждой строки, а затем получить среднее значение для каждого кросс-произведения: Eval1*Strength1 Eval2*Strength2

В идеале без записи crossprod1 <- mean (Eval1 * Strength1, na.rm = TRUE) crossprod1

Если бы кто-нибудь мог помочь с этим, я был бы очень признателен! Ура!

  [1]: https://stackru.com/images/97870e5ba65adfbcb849f84f80a7457206fd7af5.png

1 ответ

Надеюсь, это даст вам некоторые идеи. Ура!

meanTotals = c()
for(r in 1:nrow(dataset)){
  rowTotals = c()
  for(c in 1:ncol(dataset)/2){
    rowTotals = c(rowTotals, dataset[r, 2*c-1] * dataset[r, 2*c])
  }
  meanTotals = c(meanTotals, rowTotals)
}
mean(meanTotals)
Другие вопросы по тегам