在数据帧的列上运行factor()时出错

在数据帧的列上运行factor()时出错,r,dplyr,R,Dplyr,我有一个dataframe,它有几个列。我想在其中一列上运行factor()函数,比如name my_col。 起初我是这样做的 df[,"my_col"]<-factor((df[,"my_col"])) 您的数据是一个tbl\u df。我没有您的数据,但我们可以使用mtcars查看一个示例 library(dplyr) tbl_df(mtcars)[, "mpg"] # Source: local data frame [32 x 1] # # mpg # (db

我有一个dataframe,它有几个列。我想在其中一列上运行factor()函数,比如name my_col。 起初我是这样做的

df[,"my_col"]<-factor((df[,"my_col"]))

您的数据是一个
tbl\u df
。我没有您的数据,但我们可以使用
mtcars
查看一个示例

library(dplyr)

tbl_df(mtcars)[, "mpg"]
# Source: local data frame [32 x 1]
# 
#      mpg
#    (dbl)
# 1   21.0
# 2   21.0
# 3   22.8
# 4   21.4
# 5   18.7
# 6   18.1
# 7   14.3
# 8   24.4
# 9   22.8
# 10  19.2
# ..   ...
它仍然是一个数据帧,而在BaseR中,它会被放到一个原子向量中
dplyr::`[.tbl_df`
不删除单个列,就像从基R开始的
[.data.frame
中所做的那样。这就是为什么我们不能在其上运行
factor()

factor(tbl_df(mtcars)[, "mpg"])
# Error in sort.list(y) : 'x' must be atomic for 'sort.list'
# Have you called 'sort' on a list?
因此,您需要使用
[[
,如
df[[“my_col”]]
,或者只使用
$

df[["my_col"]] <- factor(df[["my_col"]])
factor(tbl_df(mtcars)[, "mpg"])
# Error in sort.list(y) : 'x' must be atomic for 'sort.list'
# Have you called 'sort' on a list?
df[["my_col"]] <- factor(df[["my_col"]])
df$my_col <- factor(df$my_col)