我得到的错误是:
运算符后面缺少名称
我在第 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
一次。