> Consider a data.frame whose different columns have numeric, character, > and factor data. In apply function, R seems to pass all elements of a > row as character. Is it possible to preserve numeric class? > >> mydf <- data.frame(x = rnorm(10), y = runif(10)) >> apply(mydf, 1, function(row) {row["x"] + row["y"]}) > [1] 0.60150197 -0.74201827 0.80476392 -0.59729280 -0.02980335 0.31351909 > [7] -0.63575990 0.22670658 0.55696314 0.39587314 >> mydf[, "z"] <- sample(letters[1:3], 10, replace = TRUE) >> apply(mydf, 1, function(row) {row["x"] + row["y"]}) > Error in row["x"] + row["y"] (from #1) : non-numeric argument to binary > operator >> apply(mydf, 1, function(row) {as.numeric(row["x"]) + as.numeric(row["y"])}) > [1] 0.60150194 -0.74201826 0.80476394 -0.59729282 -0.02980338 0.31351912 > [7] -0.63575991 0.22670663 0.55696309 0.39587311 >> apply(mydf[,c("x", "y")], 1, function(row) {row["x"] + row["y"]}) > [1] 0.60150197 -0.74201827 0.80476392 -0.59729280 -0.02980335 0.31351909 > [7] -0.63575990 0.22670658 0.55696314 0.39587314
______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.