我有一个数据框,其中有几列。我想在其中一列上运行factor()函数,比如将其命名为my_col。最初我是这样做的
df[,"my_col"]<-factor((df[,"my_col"]))
它给出了以下错误
错误:'x'必须是原子的,以便对列表进行'sort.list'。你在列表上调用了'sort'吗?
参考 SO 上的类似问题后,我的问题得到了解决。
现在,如果我尝试以下代码而不是第一种方法,则可以完美地工作,而不会产生任何错误。
df$"my_col"<-factor(df$"my_col")
为什么会这样?通过 df$vec_name 和 df[,vec_name] 访问列之间有什么区别吗?
更新:
str(df)
Classes 'tbl_df', 'tbl' and 'data.frame': 160 obs. of 8 variables:
$ area : int 1 1 1 1 1 1 1 1 1 1 ...
$ temp : int 1 1 1 1 1 1 1 1 1 1 ...
$ size : int 1 1 1 1 1 1 1 1 1 1 ...
$ storage : int 1 1 1 1 1 2 2 2 2 2 ...
$ my_col : int 1 2 3 4 5 1 2 3 4 5 ...
$ texture : num 2.9 2.3 2.5 2.1 1.9 1.8 2.6 3 2.2 2 ...
$ flavor : num 3.2 2.5 2.8 2.9 2.8 3 3.1 3 3.2 2.8 ...
$ moistness: num 3 2.6 2.8 2.4 2.2 1.7 2.4 2.9 2.5 1.9 ...