在数据帧的列上运行factor()时出错
我有一个dataframe,它有几个列。我想在其中一列上运行factor()函数,比如name my_col。 起初我是这样做的在数据帧的列上运行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
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)