Message-ID: <CACOCgckNdBwV5T3NiyAfneJd6MWoC3xKofbdu+GaUn0aMN-Jrg@mail.gmail.com>
Date: 2011-12-11T02:08:14Z
From: Xiaobo Gu
Subject: as.factor does not work inside function
In-Reply-To: <CACOCgc=5mREeOSXBydeyu5HkyenAtyG913vciiQC+D7EXQ9n5g@mail.gmail.com>
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