【发布时间】:2017-06-21 17:48:34
【问题描述】:
为简单起见:mydf <- data.frame(college=c(1,2,1,0,3))
> str(mydf)
'data.frame': 5 obs. of 1 variable:
$ college: num 1 2 1 0 3
我有一堆重复的代码元素,我通过首先分解和设置参考水平来设置进行有序逻辑回归,如下所示:
> mydf$college <- factor(mydf$college)
> relevel(mydf$college, ref="2")
[1] 1 2 1 0 3
Levels: 2 0 1 3
> str(mydf$college)
Factor w/ 4 levels "0","1","2","3": 2 3 2 1 4
我为此编写了一个函数,这样我就可以调用它并拥有更好的编程礼仪:
factor_level <- function(ds, var, referent){
ds[[var]] <- factor(ds[[var]])
ds[[var]] <- relevel(ds[[var]], ref=referent)
}
但是,当我调用该函数时,我没有收到任何错误,但我也没有得到因式分解的结果。
> factor_level(ds = mydf, var="college", referent= "2")
> str(mydf$college)
num [1:5] 1 2 1 0 3
我确定这是语法,但我无法弄清楚原因。提前致谢。
【问题讨论】:
-
你在函数内部做的事情不会改变函数外部的任何东西(除非你做了你不应该做的特殊事情)。您的函数需要返回修改后的因子
ds,并在调用函数时分配结果。