简体   繁体   中英

Apply function to NA matrix in R

I want to use the apply to use a function that I used to pull data via regular expressions and fill a matrix with it.

planetdata = function(dline) {
  new_line = unlist(strsplit(as.character(dline),"</td><td>"))
  new_first_value = substring(new_line[1],9)
  new_last_value =substring(new_line[11],1,nchar(new_line[11])-10) 
  new_line[1] <- new_first_value
  new_line[11] <- new_last_value 
  new_data <- new_line
  return(new_data)

}


new.dt = dt[21:1912]
exo.mat = matrix(data = NA, nrow=1892, ncol = 11)
colnames(exo.mat) <- c(exo.col.names)
apply(exo.mat,2,function(new.dt) planetdata(new.dt))

However, my matrix does not change and all the values are still NA. Why is this happening?

Did you mean this? exo.mat[] <- apply(new.dt, 2, planetdata)

R usually passes by value, not by reference. Modifying a variable inside a function will generally not modify it outside. You need to save the value out explicitly.

Also, you were passing in the empty matrix to apply() , it just didn't look that way because you made an anonymous function with a new.dt parameter, which is different from the new.dt variable you had in your session.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM