ошибка назначения функции в векторе (язык R) - PullRequest
0 голосов
/ 21 июня 2020

Мне нужно найти число 35 в x и назначить ему функцию. Затем вызовите функцию. код:

x  <- 1:100
z  <- 0

z[x == 35]  <- function() { # error here 
    
    print("hello")

}

z  <- max(z, na.rm=TRUE) # remove all NA in vector

z() # run it

ошибка:

Error in z[x == 35] <- function() { :
   incompatible types (from closure to double) in subassignment type fix 

Спасибо !!

Ответы [ 2 ]

0 голосов
/ 21 июня 2020

Вот почему вам это нужно, но ...

x  <- 1:100
z  <- list()

z[[which(x == 35)]]  <- function() {
  print("hello")
}

z[[which(x == 35)]]() # run it
[1] "hello"

Ключ в том, чтобы использовать список, а не вектор.

0 голосов
/ 21 июня 2020

Вы имеете в виду что-то вроде этого?

z  <- function(x) {  
    print("hello")
    max(x, na.rm=TRUE) # remove all NA in vector
  }


for (x in 1:100){
  if (x == 35){
    z(x)
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...