samedi 17 mars 2018

Logical not correctly evaluated in function R?

I wondering why my first if statement returns Error when my input data is a vector?

I have clearly stated for the first if statement to only turn on IF the data class is "data.frame", am I missing anything here?

standard <- function(data){

  if(class(data) == "data.frame" & ncol(data) > 1){ 

  data[paste0(names(data), ".s")] <- scale(data)
  data
}

 if(class(data) == "data.frame" & ncol(data) == 1){

 colnames(data) <- paste0(names(data), ".s") 
 data <- scale(data)
 data
}  

 if(class(data) != "data.frame"){

d <- as.data.frame(data)  
colnames(d) <- paste0("Var", ncol(d), ".s")
data <- scale(d)
data
   }
}
###### EXAMPLES: #######
standard(mtcars[,2])   ##Problem: `Error in if(class(data) == "data.frame" & ncol(data) > 1)`
standard(mtcars["wt"]) ## OK
standard(mtcars)       ## OK

Aucun commentaire:

Enregistrer un commentaire