6

メソッドを改善する際rbindに、渡されたオブジェクトの名前を抽出して、それらから一意の ID を生成できるようにしたいと考えています。

私は試しましall.names(match.call())たが、それは私に与えます:

[1] "rbind"         "deparse.level" "..1"           "..2" 

一般的な例:

rbind.test <- function(...) {
  dots <- list(...)
  all.names(match.call())
}

t1 <- t2 <- ""
class(t1) <- class(t2) <- "test"
> rbind(t1,t2)
[1] "rbind"         "deparse.level" "..1"           "..2" 

を取得できるようにしたいのですがc("t1","t2")

一般に、関数に渡されたオブジェクトの名前を取得できないことは承知していますが、上記の例のsubstitute(...)戻り値のように、可能かもしれません。t1

4

2 に答える 2

13

R Help List Serve の Bill Dunlapからこれを取り上げました。

rbind.test <- function(...) {
    sapply(substitute(...()), as.character)
}

これはあなたが望むものを与えると思います。

于 2012-09-14T02:20:37.887 に答える
8

こちらのガイダンスを使用して、独自の関数を作成するときに R の省略記号機能を使用する方法は?

例えばsubstitute(list(...))

と組み合わせてas.character

rbind.test <- function(...) {
  .x <-  as.list(substitute(list(...)))[-1]
  as.character(.x)
 }

あなたも使うことができます

rbind.test <- function(...){as.character(match.call(expand.dots = F)$...)}
于 2012-09-14T01:16:35.697 に答える