Я пытаюсь написать функцию, которая умножает все элементы из вектора в R - PullRequest
0 голосов
/ 04 марта 2020

Что нужно сделать, это взять вектор типа w = c(w1,w2,w3), и он получит w1*w2, w1*w3 и w2*w3. Я ищу формулу, которая является достаточно общей, чтобы взять 10 или более весов.

multelem <- function(x){
+     x1 <- numeric(0)
+     for(i in x){
+         x1 <- x[i]*x[i+1]  
+     }
+     print(x1)
+ }

Идея заключалась в том, чтобы умножить веса рядом друг с другом. Если бы это работало, я бы добавил строку типа x2 <- x[i]*x[i+2] и так до length(w). К сожалению для меня, у меня проблемы с выполнением этой функции хорошо. Я думаю, что у меня есть право интуиции, но исполнение не работает. Пожалуйста, поделитесь идеями или, если есть пакет, который уже решил эту проблему, пожалуйста, дайте мне знать.

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 04 марта 2020

По линии themailmail anwser.

x=c(1,2,3,4)
combn(x, 2, FUN = function(x) x[1]*x[2]) 
0 голосов
/ 04 марта 2020

Вы можете попробовать это,


multelem <- function(x){
c <- 1
for(i in x){
  c = 1+c
  x1 <- i*x[c] 
  print(x1)
}
}

x <- c(1,3,5,7,9)
multelem(x)
0 голосов
/ 04 марта 2020

Пожалуйста, попробуйте это:

multelem <- function(x){
  x1 <- numeric(0)
       for(i in 1:(length(x)-1)){
         x1[i] <- x[i]*x[i+1]  
       }
  print(x1)}

Так как вы использовали (i в x), он брал первое число в векторе как i и не мог найти число для x [i + 1] .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...