Hi, I am trying to write a function do cast columns of data frame as factor in a loop, the source is :
as.factor.loop <- function(df, cols){ if (!is.null(df) && !is.null(cols) && length(cols) > 0) { for(col in cols) { df[[col]] <- as.factor(df[[col]]) } } } source('D:/ambertuil.r') x <- 1:5 y <- 2:6 df <- data.frame(x=x, y=y) as.factor.loop(df, c("x")) But after the function call, the df data frame does not change, because is.factor(df[["x]]) FALSE But if I call this in R console directlly, it works for(col in c("x","y")){df[[col]] <- as.factor(df[[col]])} is.factor(df[["x]]) FALSE Regards, Xiaobo Gu ______________________________________________ R-help@r-project.org mailing list 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.