R语言 编写一个函数,返回传递对象的字符串

bz4sfanl  于 2023-02-06  发布在  其他
关注(0)|答案(2)|浏览(137)

我想创建一个名为"test"的R函数,该函数带有一个参数"object",该参数可以是一个 Dataframe 或一系列 Dataframe :

  • 如果object是数据框,则test()必须以字符串形式返回数据框的名称
  • 如果object是一个列表,test()必须返回一个字符串向量,其中每个元素是 Dataframe 的名称。
    • 我希望test()使用管道%〉%和|〉**.

我尝试了:

test <- function(object) {
  return(deparse(substitute(object)))
}

# must return "iris"
iris |> test()
# must return "iris" "mtcars"
list(iris,mtcars) |> test()

不幸的是,我的测试给出了以下结果:

> list(iris,mtcars) |> essai()
[1] "list(iris, mtcars)"
2hh7jdfx

2hh7jdfx1#

test <- function(object) {
  if (class(object) == "list") {
    unlist(lapply(substitute(object), \(x) deparse(x)))[-1]
  } else {
    deparse(substitute(object))
  }
}

iris |> test()
# [1] "iris"

list(iris,mtcars) |> test()
# [1] "iris"   "mtcars"
ogsagwnx

ogsagwnx2#

更新代码:

test <- function(object) {
  if (class(object) == "data.frame") {
    return(deparse(substitute(object)))
  } else if (class(object) == "list") {
    return(unlist(lapply(object, function(x) deparse(substitute(x)))))
  } else {
    stop("Input must be a data frame or a list of data frames.")
  }
}

# must return "iris"
test(iris)
# must return c("iris", "mtcars")
test(list(iris, mtcars))

相关问题