如何判断某个东西是向量还是指向R中的向量

时间:2014-09-08 23:55:31

标签: r

如果我有一个带参数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"

我迷失在substitutedeparse以及各种各样的相关想法中。照明赞赏。

2 个答案:

答案 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先生的回答似乎更具信息性,但我认为添加一个最小的例子可能也会有所帮助。