2

私は明らかに私の灰白質が現在把握することを拒否している単純なものを持っています-私がリストを持っていると言います:

list(a = "foo", b = c("bar", "biz", "booze"))

および関数fn。このような文字列を取得するにはどうすればよいですか?

"fn(a = \"foo\", b = c(\"bar\", \"biz\", \"booze\"))"

PS

朝にこれを聞いて後悔することはわかっています...

4

2 に答える 2

5

これで始められるはずですよね...?

deparse(list(a = "foo", b = c("bar", "biz", "booze")),control = NULL)
[1] "list(a = \"foo\", b = c(\"bar\", \"biz\", \"booze\"))"

@aL3xaがコメントしたように私が完成させたより完全なバージョン...

gsub("^list","fn",
    deparse(list(a = "foo", b = c("bar", "biz", "booze")),control = NULL))
于 2012-09-24T02:21:55.733 に答える
3

R言語定義の第6章で説明されているように、言語オブジェクトを直接操作することもできます。

X <- quote(list(a = "foo", b = c("bar", "biz", "booze")))
X[[1]] <- quote(fn)  ## as.symbol("fn") would also work
deparse(X)
# [1] "fn(a = \"foo\", b = c(\"bar\", \"biz\", \"booze\"))"

または、リストがすでに名前付きオブジェクトに格納されている場合は、目的の呼び出しを使用c()as.call()てつなぎ合わせることができます。

ll <- list(a = "foo", b = c("bar", "biz", "booze"))
deparse(as.call(c(as.symbol("fn"), ll)))
# [1] "fn(a = \"foo\", b = c(\"bar\", \"biz\", \"booze\"))"
于 2012-09-24T03:09:00.207 に答える