如果我有一个带参数x
的函数,并假设函数期望x
是一个向量,我该如何测试x
是一个向量还是指向的是一个载体?
fun <- function(x) {
brilliant manipulation of x here
output based on manipulation of x here
}
例如,我如何区分案例1:
myvector <- c(1,2,3)
fun(myvector)
案例2中的:
fun(c(1,2,3))
我希望fun()
能够为案例1输出"Output concerning myvector"
。
我希望fun()
能够为案例2输出"Output concerning x"
。
我迷失在substitute
,deparse
以及各种各样的相关想法中。照明赞赏。
答案 0 :(得分:5)
怎么样
fun<-function(x) {
pp<-substitute(x)
nn<- if(is.name(pp)) {
deparse(pp)
} else {
"x"
}
paste("Output concerning", nn)
}
myvector <- c(1,2,3)
fun(c(1,2,3))
# [1] "Output concerning x"
fun(myvector)
# [1] "Output concerning myvector"
我们使用substitute
来查看传递的内容。如果它是name
,则假设它是变量名称,deparse()
表示获取名称的字符版本,否则使用“x”。
答案 1 :(得分:1)
fun <- function(x) { if(is.name( substitute(x) ) ){ print(TRUE)}; return(x) }
Flick先生的回答似乎更具信息性,但我认为添加一个最小的例子可能也会有所帮助。