Spotfire / TERR问题-解析错误文本=脚本

问题描述

parse(文本=脚本)中的错误:text参数中的解析错误:符号​​​​​​​必须使用反引号(第26行,字符47到67)写

当我尝试使用以下代码时,出现上述错误。奇怪的是,我的代码中没有任何``。对我缺少的内容有什么建议吗?第26行以if(sum(gdata ..

data = data.frame( Well,Prod,ProdDate )

data$ProdDate = as.POSIXct(data$ProdDate,origin = "1970-01-01",tz="UTC")
data$ProdDate <- interpnA(data$ProdDate,method = c("linear") 
minDate = aggregate(x=data$ProdDate,by=list(data$Well),FUN=min)
colnames(minDate) <- c("Well","MinDate")
data = merge(data,minDate,by="Well",all.x=TRUE)

# Calculate Days On
data$MinDate = as.POSIXct(data$MinDate,origin="1970-01-01",tz="UTC")
data$DaysOn = as.numeric(data$ProdDate - data$MinDate,units="days")
data$Predict = rep(NA,nrow(data))
data$Qi = rep(NA,nrow(data))
data$A = rep(NA,nrow(data))
data$B = rep(NA,nrow(data))

gdata <- data;

min.RSS <- function(data,par) {
  with(data,sum(((par[1]/((1+par[2]*par[3] * DaysOn)^(1/par[3]))) - Oil)^2))
}

wells = unique( na.omit(gdata$Well) )
 for(well in wells) {
    idx = gdata$Well == well
    if(sum(gdata$Prod[idx],na.rm=TRUE) > 0) {​​​​​​​
        startQi = max(data$Prod[idx],na.rm=TRUE)
        fit <- optim(par = c(startQi,.2),min.RSS,x = gdata[idx,])
        gdata$Predict[idx] = fit$par[1]/((1+fit$par[2]*1*gdata$DaysOn[idx])^(1/1))
        gdata$Qi[idx] = fit$par[1]
        gdata$A[idx] = fit$par[2]
        gdata$B[idx] = 1 
    }​​​​​​​
}​​​​​​​
gdata$ProdDateCheck <- gdata$ProdDate
Predict <- gdata #gdata[,c("MinDate","DaysOn","Predict","Qi","A","B")]

解决方法

在第26行的右括号之后,您有一堆零长度的空格字符(Unicode 200B)。您看不到它们,因为它们是不可见的。

如果将代码行直接复制到R控制台中,则可以确认这一点。如果您在问题下方点击“编辑”,则在进入R并执行以下操作时,将第26行复制到剪贴板中:

readClipboard()

你会得到

#> [1] "    if(sum(gdata$Prod[idx],na.rm=TRUE) > 0) {???????"

在这里您可以看到R解释器不​​知道如何显示零长度字符串字符。这些是导致错误的原因。

最简单的解决方法是进入文件,选择下一行的开头,然后按退格键,直到删除括号。输入新的花括号和换行符,然后保存。之后,您的文件应该可以工作了。

关于它们如何到达那里-如果您从html源复制了代码,或者有人在玩恶作剧,那么就有可能得到这些东西。