You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用gtrendsR包执行代码报错:Error in make.names(...) : invalid multibyte string 1

解决gtrendsR中make.names(col.names, unique = TRUE)的多字节字符串错误

我碰到过好几次这个问题,大多是字符编码在捣鬼!这个报错本质是R的make.names函数没法处理含特殊多字节字符的列名,而谷歌趋势返回的部分地区/关键词元数据可能带非ASCII字符,导致列名处理失败。下面给你几个靠谱的解决方案,按顺序试就行:

  • 第一步:检查并调整系统Locale
    Locale设置会影响R处理字符的方式,把它改成支持UTF-8的英文编码基本能解决大部分问题:

    • Windows系统运行:
      Sys.setlocale(category = "LC_ALL", locale = "English_United States.1252")
      # 或者尝试UTF-8版本(部分Windows环境支持)
      # Sys.setlocale(category = "LC_ALL", locale = "en_US.UTF-8")
      
    • Linux/macOS系统运行:
      Sys.setlocale(category = "LC_ALL", locale = "en_US.UTF-8")
      

    可先运行Sys.getlocale()查看当前Locale设置,确认修改成功后再重试你的代码。

  • 第二步:升级gtrendsR到最新版本
    旧版本的包可能存在编码处理的bug,重新安装最新版试试:

    install.packages("gtrendsR")
    # 如果github版本有修复,也可以装开发版
    # devtools::install_github("PMassicotte/gtrendsR")
    
  • 第三步:全局设置编码选项
    在调用gtrends前先指定全局编码为UTF-8:

    options(encoding = "UTF-8")
    res <- gtrends(c("nhl", "nba"), geo = c("CA", "US"))
    
  • 第四步:排查单个地区的问题
    有时候可能是某一个地区的返回数据有异常,先单独测试单个geo参数,比如:

    # 先测加拿大地区
    res_ca <- gtrends("nhl", geo = "CA")
    # 再测美国地区
    res_us <- gtrends("nba", geo = "US")
    

    如果其中一个正常一个报错,就能定位是哪个地区的数据导致的问题,再针对性处理。

你可以先从调整Locale开始试,这是最常见的解决办法,一般都能搞定!

内容的提问来源于stack exchange,提问作者user9532692

火山引擎 最新活动