tidyr包中的unite函数不';行不通
我正在尝试处理一些角色 代码如下所示:tidyr包中的unite函数不';行不通,r,string,tidyr,R,String,Tidyr,我正在尝试处理一些角色 代码如下所示: library(tidyr) unite(data ,sep="%in% ") 这里的data是一个数据框,看起来如下: A B 1 Var 'Y' 我可以在R3.4.4下成功运行它 1 Var%in% 'Y' 但在R3.5.1中,它会告诉我错误: Error in is_string(expr) : argument "expr" is missing, with no default 如何解决这个问题 很抱歉,之前没有指
library(tidyr)
unite(data ,sep="%in% ")
这里的data
是一个数据框,看起来如下:
A B
1 Var 'Y'
我可以在R3.4.4下成功运行它
1 Var%in% 'Y'
但在R3.5.1中,它会告诉我错误:
Error in is_string(expr) : argument "expr" is missing, with no default
如何解决这个问题
很抱歉,之前没有指定问题。我现在已经找到了问题所在。您需要为新列指定一个名称,例如
unite(data, "newcol", sep = "%in%")
如果您使用管道,则在没有3个参数的情况下,这似乎是可行的,例如
data %>% unite("newcol", sep = "%in%")
但是管道操作符实际上只是隐藏了一个事实,data
是第一个参数
编辑以添加:您的原始表单在
tidyr
0.8.1版中工作(正如@Spacedman所指出的),但它生成的数据帧无效。此错误在此之后某个时候被修复。您需要为新列指定一个名称,例如
unite(data, "newcol", sep = "%in%")
如果您使用管道,则在没有3个参数的情况下,这似乎是可行的,例如
data %>% unite("newcol", sep = "%in%")
但是管道操作符实际上只是隐藏了一个事实,data
是第一个参数
编辑以添加:您的原始表单在
tidyr
0.8.1版中工作(正如@Spacedman所指出的),但它生成的数据帧无效。这个错误在那之后的某个时候被修复。你有三行toString
-哪一行?我在R3.5.1的RStudio中编织时没有看到这个错误。它只在编织时发生吗?你能在命令行上实现吗?它是否仅在写入文件时发生?是不是cat
?回溯看起来像什么?@Spacedman在命令行运行时也会发生这种情况。请编辑标题以反映这不是R版本的问题,而是tidyr程序包的问题。这适用于V0.8.1,但适用于R3.4.4中的0.8.3时失败您有三行toString
-哪一行?我在R3.5.1的RStudio中编织时没有看到此错误。它是否仅在编织时发生?你能在命令行上实现吗?它是否仅在写入文件时发生?是不是cat
?回溯看起来像什么?@Spacedman在命令行运行时也会发生这种情况。请编辑标题以反映这不是R版本的问题,而是tidyr程序包的问题。这适用于V0.8.1,但不适用于R3.4.4中的0.8.3