R 将DF列转换为因子并不简单

R 将DF列转换为因子并不简单,r,variables,type-conversion,R,Variables,Type Conversion,我正在学习R,并希望得到一些解释/提示,说明错误的含义以及为什么我不能简单地将列指定为因子: 在R中,我将.csv()读入变量DF中类(DF)告诉我这是一个“data.frame”,但第1、2和3列是非因子。当我尝试将列1、2、3指定为因子时,我得到一个错误: asFactors <- c(1:3) DF[asFactors] <- as.factors(DF[asFactors]) # same if I use DF[,asFactors] Error in sort.list

我正在学习R,并希望得到一些解释/提示,说明错误的含义以及为什么我不能简单地将列指定为因子:

在R中,我将.csv()读入变量DF中<代码>类(DF)告诉我这是一个“data.frame”,但第1、2和3列是非因子。当我尝试将列1、2、3指定为因子时,我得到一个错误:

asFactors <- c(1:3)
DF[asFactors] <- as.factors(DF[asFactors]) # same if I use DF[,asFactors] 
Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?
此外,如果我尝试使用Lappy将列4,5,6转换为数值,我会得到一个新错误:

asNumeric <- c(4:6)
DF[,asNumeric] <- lapply(DF[asNumeric], numeric) 
Error in FUN(X[[i]], ...) : invalid 'length' argument

asNumeric要将多列更改为系数,请使用:

DF[,1:3] <- lapply(DF[,1:3], factor)

DF[,1:3]要将多列更改为系数,请使用:

DF[,1:3] <- lapply(DF[,1:3], factor)

DF[,1:3]
lappy
应该可以工作。您可能在数据中遇到了问题。提供一个可复制的示例供人们使用。OK。重复项在哪里?@val-函数是
as.numeric
而不是
numeric
@val-
as.factor
也存在。恰好,
factor
能够根据您的输入生成一个因子。
lappy
应该可以工作。您可能在数据中遇到了问题。提供一个可复制的示例供人们使用。OK。重复项在哪里?@val-函数是
as.numeric
而不是
numeric
@val-
as.factor
也存在。恰好,
factor
能够根据您的输入生成一个因子。Lappy对factors有效,但对numeric无效。@val-查看上面的方法现在是否可以转换为numeric。Lappy对factors有效,但对numeric无效。@val-查看上面的方法现在是否可以转换为numeric。
DF[,1:3] <- lapply(DF[,1:3], factor)
DF[,1:3] <- lapply(DF[,1:3], function(x) as.numeric(as.character(x)))