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))