我尝试了这行代码。我认为它现在更早起作用了。
lapply(is.factor(df),levels(df)=(1:length(levels(df))))
我想将所有因子变量转换为整数值,如1,2,3等。
答案 0 :(得分:2)
你快到了。您应该将数据框作为lapply
中的第一个参数传递,然后运行is.factor
作为构成lapply
的第二个参数的函数的一部分
DFrame <- data.frame(x = letters[1:3],
y = letters[4:6],
z = LETTERS[9:11])
DFrame <- lapply(DFrame,
function(t)
if (is.factor(t)) as.numeric(t) else t)
DFrame <- as.data.frame(DFrame)
DFrame
vapply(DFrame, class, character(1))
答案 1 :(得分:1)
使用新的purrr package,这将成为一个很好的单行:
library(purrr)
df <- data.frame(x = letters[1:3],
y = letters[4:6],
z = LETTERS[9:11])
df %>% map_if(is.factor, as.numeric) %>% str()
#> 'data.frame': 3 obs. of 3 variables:
#> $ x: num 1 2 3
#> $ y: num 1 2 3
#> $ z: num 1 2 3