【问题标题】:Odd gsub error for a recode function in R when I didn't use the gsub function当我不使用 gsub 函数时,R 中的 recode 函数出现奇怪的 gsub 错误
【发布时间】:2018-11-16 14:03:49
【问题描述】:

我经常使用汽车库中的 R 中的 recode() 函数。它工作得很好。但是,现在我收到一条奇怪的 gsub 错误消息,我不知道为什么,因为我没有在命令中调用 gsub() 函数。

前几天我使用 gsub() 函数将逗号从数值中提取出来,但那是完全不同的东西。自从收到错误后,我指定了 car::recode() 函数并重新启动了 R 并仅重新加载了汽车库,但我仍然收到相同的错误。

下面的代码只是我的学生的一个简单的重新编码练习,现在我很困惑。有什么想法吗?

# enter grade data
> trust <- c("D","C","B","D","E","C","A","F","D","C")

# recode letters to numbers
> library(car)
> trust.r <- recode(trust(" 'A'=5; 'B'=4; 'C'=3; 'D'=2; 'E'=1; 'G'=0 "))
Error in gsub("\n|\t", " ", recodes) : argument "recodes" is missing, with no default

# Weird error.  Specify recode() from car library
> trust.r <- car::recode(trust(" 'A'=5; 'B'=4; 'C'=3; 'D'=2; 'E'=1; 'G'=0 "))
Error in gsub("\n|\t", " ", recodes) : argument "recodes" is missing, with no default

# Still weird error.  Flip " and ' symbols, just in case
> trust.r <- car::recode(trust(' "A"=5; "B"=4; "C"=3; "D"=2; "E"=1; "G"=0 '))
Error in gsub("\n|\t", " ", recodes) : argument "recodes" is missing, with no default

【问题讨论】:

  • recode 在内部使用 gsub。当您执行recode(trust(...)) 时,您正在使用trust,就像它是一个函数一样,但在上面您将它定义为一个对象(因为它后面有一个括号)。我认为正确的语法类似于recode(trust, recodes = "'A'=5; 'B'=4;...")
  • 哇......现在我很尴尬。完全的菜鸟错误。 :) 谢谢!我猜我盯着屏幕太久了。

标签: r syntax-error gsub recode


【解决方案1】:

我认为格雷戈尔的评论是正确的。如果您阅读?recode 页面,您会看到

用法
重新编码(var,重新编码,as.factor,as.numeric=TRUE,级别)

参数
var数值向量、字符向量或因子。

recodes重新编码规范的字符串:见下文。

所以,不要尝试将recodes 嵌入到var

【讨论】:

  • 感谢卡尔的支持评论!我完全错误,但当我看到错误消息并感到困惑时,我可能开始过度思考这个问题。
猜你喜欢
  • 1970-01-01
  • 2022-12-17
  • 2021-10-05
  • 2020-05-26
  • 2012-05-08
  • 2010-12-31
  • 1970-01-01
  • 2017-10-13
  • 1970-01-01
相关资源
最近更新 更多