如何将数据框中给定的列表转换为R数据框中的因子/数字?

时间:2019-03-02 10:26:59

标签: r list dataframe dplyr

mydf用于可复制的目的。我有mydf数据框,我想将list转换为mydf中的因子,但是会引发错误

mydf<-data.frame(col1=c("a","b"),col2=c("f","j"))
mydf$col1<-as.list(mydf$col1)
mydf$col2<-as.list(mydf$col2)
str(mydf)

这是我尝试将列表更改为因子/数字类型时遇到的错误

mydf$col1<-as.factor(mydf$col1)

Error in order(y) : unimplemented type 'list' in 'orderVector1'

我希望我的数据框(mydf)是预期的_df(无列表数据框)

expected_df<-data.frame(col1=c("a","b"),col2=c("f","j"))
str(expected_df)

如果比较str(mydf)和str(expected_df),则存在差异,因为我无法将列表更改为mydf数据框中的因子。有什么解决方法可以解决我的问题?

str(mydf)
'data.frame':   2 obs. of  2 variables:
$ col1:List of 2
..$ : Factor w/ 2 levels "a","b": 1
..$ : Factor w/ 2 levels "a","b": 2
$ col2:List of 2
..$ : Factor w/ 2 levels "f","j": 1
..$ : Factor w/ 2 levels "f","j": 2



str(expected_df)
'data.frame':   2 obs. of  2 variables:
$ col1: Factor w/ 2 levels "a","b": 1 2
$ col2: Factor w/ 2 levels "f","j": 1 2

1 个答案:

答案 0 :(得分:0)

您可以使用stringsAsFactors = TRUE

> mydf <- data.frame(col1 = c("a", "b"), col2 = c("f", "j"), stringsAsFactors = TRUE)
> mydf
  col1 col2
1    a    f
2    b    j
> mydf$col1
[1] a b
Levels: a b
> str(mydf)
'data.frame':   2 obs. of  2 variables:
$ col1: Factor w/ 2 levels "a","b": 1 2
$ col2: Factor w/ 2 levels "f","j": 1 2