John Huang
John Huang

Reputation: 845

Function that only runs when matrices has NAs in it

I have two matrices, one of them has a NA value and I want to use a function that only runs if there are NAs present in the data, so if I run the function it should only work on df2 and not df1. How would I do this?

df1 <- matrix(1:4, nrow = 2, ncol = 2)
df2 <- matrix(1,2,3,NA, nrow = 2, ncol = 2)

Upvotes: 0

Views: 33

Answers (1)

David J. Bosak
David J. Bosak

Reputation: 1624

Based on the comment above, here is a complete answer (assuming I understand what you are getting at). The function is set up to do something or not to the matrix depending on whether it has NA values.

df1 <- matrix(1:4, nrow = 2, ncol = 2)
df2 <- matrix(c(1,2,3,NA), nrow = 2, ncol = 2)


myfunc <- function(m) {

  ret <- m  
  
  if (all(!is.na(m))) {
   
    print("This matrix has no NAs") 
   
  } else {
   
    print("This matrix has NAs")
  
  }
   
  return(ret)
  
}


myfunc(df1)
# [1] "This matrix has no NAs"
#      [,1] [,2]
# [1,]    1    3
# [2,]    2    4

myfunc(df2)
# [1] "This matrix has NAs"
#       [,1] [,2]
# [1,]    1    3
# [2,]    2   NA

Upvotes: 1

Related Questions