dplyr:mutate_at将字符列转换为因子列

dplyr:mutate_at将字符列转换为因子列,r,dplyr,R,Dplyr,我正在尝试将data.table数据表对象中的字符列转换为因子列。我可以做到: df$a <- as.factor(df$a) 上述问题似乎并不罕见。已在以下位置对其进行了探索,但仍未解决:。似乎基于dplyr的解决方案来更改列类型是最好的。这就是我想做的。让我们看一个玩具的例子 假设我有一个数据。表df: names(df) [1] "a" "b" "c" [4] "d" "e" "f" 我尝试: df %>% mutat

我正在尝试将
data.table
数据表对象中的字符列转换为因子列。我可以做到:

df$a <- as.factor(df$a)
上述问题似乎并不罕见。已在以下位置对其进行了探索,但仍未解决:。似乎基于
dplyr
的解决方案来更改列类型是最好的。这就是我想做的。让我们看一个玩具的例子

假设我有一个
数据。表
df

names(df)
[1] "a"  "b"  "c"                   
[4] "d"  "e"  "f"     
我尝试:

df %>% mutate_at(.vars = vars(a), 
                 .funs = funs(factor))
但我得到:

Error in overscope_eval_next(overscope, expr) : object 'a' not found
为什么找不到对象“a”以及如何修复它

另一种
mutate_at
解决方案的参考:

仅供参考,以下是我的sessionInfo()


dplyr提供双赋值运算符
%%
,该运算符从左向右传递,然后将管道末端重新分配回运算符左侧的参数

简言之,这应该是可行的:

df$a%%作为系数

dplyr提供了从左向右传递的双赋值运算符
%%
,然后将管道末端重新分配回运算符左侧的参数

简言之,这应该是可行的:

df$a%%作为系数

由于dplyr 1.0.0不推荐范围内的变体,如
处进行变异,以下是如何跨
执行此操作的更新:

df %>% mutate(across(a, as_factor))
重要:
应用的函数必须在
cross()
调用内,而不是在调用外。

由于dplyr 1.0.0不推荐范围内的变量,如
mutate\u at
,下面是如何跨
执行此操作的更新:

df %>% mutate(across(a, as_factor))
重要:
应用的函数必须位于
cross()
调用的内部,而不是外部。

它对我甚至
数据都有效。table
。请共享
str(df)
的输出。我支持@MKR的语句,这对我有效:
df%mutate\u at(.vars(a),.funs=funs(factor))
我有R版本3.4.3。并加载
data.table_1.10.4-3 dplyr_0.7.4
快速更新:上面@Sastibe的示例也适用于我。我的
df肯定有问题。让我花点时间试着找出问题的症结所在,然后再报告。它甚至对
数据都有效。table
。请分享
str(df)
。我支持@MKR的语句,这对我有效:
df%mutate_at(.vars(a),.funs=funs(factor))
我有R版本3.4.3。并加载
data.table_1.10.4-3 dplyr_0.7.4
快速更新:上面@Sastibe的示例也适用于我。我的
df肯定有问题。让我花点时间来找出问题所在,我会向你汇报。
df %>% mutate(across(a, as_factor))