gpt4 book ai didi

R - 检测表达式

转载 作者:行者123 更新时间:2023-12-04 14:17:39 24 4
gpt4 key购买 nike

什么类型的对象被传递给 myFunc作为 x?它似乎不是一个表达式,也不是一个函数,而 str 只是对它进行评估。我知道我可以使用 force()评估。我想知道是否有某种方法可以在不评估的情况下收集有关 x 的更多信息。

myFunc = function( x )
{
is.expression( x )
is.function( x )
str( x )
}
myFunc( { x = 5; print( x + 1 ) } )

最佳答案

您可以使用 match.call用于提取参数:

myFunc <- function( x ) {
x <- match.call()$x
print(class(x))
print(typeof(x))
print(mode(x))
print(storage.mode(x))
print(is.expression(x))
print(is.call(x))
if (is.call(x)) print(x[[1]])
}
myFunc({x = 5; print("a")})
myFunc(expression(x))
x <- factor(1)
myFunc(x)
myFunc(1)

大概我需要说的是 {是 R 中的函数,所以 {...}不超过 call .

更新:为什么 x不是 function{function :
f <- function(x) {
x <- match.call()$x
print(eval(x[[1]]))
print(is.function(eval(x[[1]])))
}

f({1})

关于R - 检测表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8657430/

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