【发布时间】:2020-01-27 12:12:07
【问题描述】:
请看下面的 MWE
generate_summ_code= function(...) {
code = substitute(list(...))[-1]
gpd = getParseData(parse(text = deparse(code)), includeText = TRUE)
print(gpd)
gpd
}
generate_summ_code(n = n())
如果我在 REPL 中运行它,我会打印出来
> line1 col1 line2 col2 id parent token terminal text
> 10 1 1 1 5 10 0 expr FALSE n()()
> 6 1 1 1 3 6 10 expr FALSE n()
> 1 1 1 1 1 1 3 SYMBOL_FUNCTION_CALL TRUE n
> 3 1 1 1 1 3 6 expr FALSE n
> 2 1 2 1 2 2 6 '(' TRUE (
> 4 1 3 1 3 4 6 ')' TRUE )
> 7 1 4 1 4 7 10 '(' TRUE (
> 8 1 5 1 5 8 10 ')' TRUE )
但是,如果我将代码放入文件中,请说 code.r,我会这样做
Rscript code.r
或
R -e "source('code.r')"
它只返回 NULL。 ?getParseData 中没有任何内容表明行为应该有所不同?
这是 Base R 中的错误吗?
【问题讨论】:
-
不管怎样,
force(code)在这里没有任何作用。