【发布时间】:2020-07-22 15:32:34
【问题描述】:
我有一个名为 df 的数据框,其中包含 70 个字符变量。我正在尝试创建一个函数来将所有这些字符列转换为分类变量,而无需指定每个列名。这方面的一个例子是这样的:
df
fruits cars
1 apple volvo
2 pear bwm
3 apple bwm
4 orange volvo
5 orange fiat
我想要的输出如下所示:
df
fruits cars
1 1 1
2 2 2
3 1 2
4 3 1
5 3 3
我尝试转换为因子,然后通过不使用 apply 来指定在单个列上执行时有效的级别。这是我的尝试:
x <- apply(df$fruit, 2, factor)
levels(x) <- 1:length(levels(x))
在函数中失败
label_num <- function(x){
assigned <- 1:length(levels(x))
return(assigned)
}
x <- apply(df, 2, factor)
apply(levels(x), 2, label_num)
我收到以下错误:
Error in apply(levels(x), 2, label_num) :
dim(X) must have a positive length
有人可以帮我解决这个问题,因为我对 R 很陌生。非常感谢。
【问题讨论】:
标签: r function dataframe apply