Google Sheets JavaScript 錯誤 "missing name after . operator"



我得到的错误是:

运算符后面缺少名称

我在第 10 行调试/运行我的代码时得到它。 有人知道解决方法吗?

1    function codebook_level() {
2      
3      if(!require(pacman)) {
4      install.packages("pacman"); require(pacman)}
5    p_load(magrittr, data.table)
6    require(dplyr)
7    
8    
9    read_add_name_col <- function(file){
10      rn <- gsub(".csv", "", file, ignore.case=T)
11      spl <- strsplit(rn, "/") %>% unlist()
12      svy <- spl[length(spl)]
13      df <- fread(file)
14      df$survey_series <- svy
15      return(df)
....

<-不是JavaScript运算符。它将被解析为<比较运算符,后跟-

但令人惊讶的是,这不是问题,尽管这可能是一个问题。Google Sheets实现的语言非常类似于JavaScript about ES3(所以,很久以前),尽管不完全相同。那时,您不能将关键字用作属性名称文本。所以你的问题标题中的具体问题在这里:

rn <- gsub(".csv", "", file, ignore.case=T)
// ---------------------------------^

要在 ES5 规范更改语法之前访问名为case的属性,您必须使用括号表示法和字符串:ignore["case"]而不是ignore.case

但同样,这只是问题中的错误;代码总体看起来可能存在其他问题,除非<-是某种 Sheets 语言扩展。


我确实将"case"编辑为 [case] 以解决此问题,但现在我在同一行上收到一个通用的"语法"错误。

是的。你必须处理围绕<-的各种其他问题,这些问题不应该存在,以及其他非JavaScript主义。令人印象深刻的是,解析器能够走那么远,真的,但下一行的sp1令牌完全杀死了它

看起来<-应该是=rn,而这些应该是变量。㞖:

  • 使用=(赋值)运算符
  • 声明变量,这样你就不会成为隐式全局的恐怖的牺牲品(这是我贫血的小博客上的一篇文章)

还值得注意的是,

gsub(".csv", "", file, ignore.case=T)

。看起来像它试图使用命名参数。JavaScript 没有命名参数,该代码真正做的是:

ignore.case=T
gsub(".csv", "", file, T)

。但只评估T一次。

相关内容

最新更新