gpt4 book ai didi

r - 嵌套 ifelse 语句的可能数量是否有限制

转载 作者:行者123 更新时间:2023-12-03 12:45:16 25 4
gpt4 key购买 nike

我编写了一个使用 75(!!!) 嵌套 ifelse 语句的代码。

我知道它可能是我可以编写的最低效的代码,但是当我尝试运行它时,我收到以下错误:

>Error: unexpected ')' in:
" ifelse(basic$SEMType=="ppc" &
(grepl("Wellpoint Prospecting",basic$CategoryName)), "Wellpoint Prospecting","other"
)))))))))))))))))))))))))))))))))))))"

我检查并检查了“)”的数量。它是正确的,ifelse 关闭。

我还尝试按 block 运行嵌套的 ifelse,一次 15 个(有时是更大的 block )并且它可以工作,所以我认为语法错误的机会很低。

有没有人遇到过这样的限制?

我现在首先在内部 ifelse 中运行代码片段并记录结果并向上移动 channel 。到目前为止,这似乎有效。

最佳答案

至少用这种方法,我似乎最多可以创建50层嵌套

x<-"NA"
for(i in 1:50) {
x<-paste0("ifelse(x==",i,",",i,",", x, ")")
}
x
eval(parse(text=x), list2env(list(x=21)))

但是如果我尝试 51,我会得到错误
Error in parse(text = x) : contextstack overflow at line 1

所以也许这是特定于解析的。您会收到语法错误似乎很奇怪。

感谢@shadow 提供的链接,Brian Ripley 在 2008 response 中证实了这一点。一个 r-help 问题

In this particular case [contextstack overflow], it is saying that you have more than 50 nested parse contexts



并且@Spacedman 找到了 where this limit is defined在 R 源代码中
#define CONTEXTSTACK_SIZE 50

关于r - 嵌套 ifelse 语句的可能数量是否有限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25063354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com