CoderCat
CoderCat

Reputation: 21

function assignment error in a vector(R language)

i need to find the number 35 in x and assign it a function. Then call the function. code:

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:

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

Thanks!!

Upvotes: 0

Views: 96

Answers (2)

Limey
Limey

Reputation: 12461

Quite why you'd want to do it, but...

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

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

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

The key is to use a list, not a vector.

Upvotes: 1

flavinsky
flavinsky

Reputation: 319

Do you mean something like this?

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)
  }
}

Upvotes: 0

Related Questions