我编写了一个使用75(!!!)嵌套ifelse语句的代码.
我知道它可能是我写的最低效的代码,但当我尝试运行它时,我收到以下错误:
>Error: unexpected ')' in:
" ifelse(basic$SEMType=="ppc" &
(grepl("Wellpoint Prospecting",basic$CategoryName)), "Wellpoint Prospecting","other"
)))))))))))))))))))))))))))))))))))))"
Run Code Online (Sandbox Code Playgroud)
我检查并加倍检查")"的数量.它的正确和ifelse关闭.
我还试图通过块运行嵌套的ifelse,一次运行15个(有时候更大的块)并且它可以工作,所以我认为语法错误的可能性很低.
有没有人遇到过这样的限制?
我现在首先运行代码块内部ifelse并记录结果并向上移动通道.到目前为止,这似乎有效.
MrF*_*ick 24
至少使用这种方法,我似乎能够创建最多50个嵌套级别
x<-"NA"
for(i in 1:50) {
x<-paste0("ifelse(x==",i,",",i,",", x, ")")
}
x
eval(parse(text=x), list2env(list(x=21)))
Run Code Online (Sandbox Code Playgroud)
但如果我尝试51,我得到错误
Error in parse(text = x) : contextstack overflow at line 1
Run Code Online (Sandbox Code Playgroud)
所以也许这是特定的解析.你会得到一个语法错误似乎很奇怪.
感谢@shadow提供的链接,Brian Ripley在2008年对 r-help问题的回复中证实了这一点
在这个特殊情况下[ contextstack overflow ],它说你有超过50个嵌套的解析上下文
#define CONTEXTSTACK_SIZE 50
Run Code Online (Sandbox Code Playgroud)