[R] as.factor does not work inside function

Xiaobo Gu guxiaobo1982 at gmail.com
Sun Dec 11 03:08:14 CET 2011


I am sorry, it is

 for(col in c("x","y")){df[[col]] <- as.factor(df[[col]])}
 is.factor(df[["x]])
TRUE


On Sun, Dec 11, 2011 at 10:06 AM, Xiaobo Gu <guxiaobo1982 at gmail.com> wrote:
> 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



More information about the R-help mailing list