Python のrepr
関数や Lisp のprin1-to-string
. そのような関数はRに存在しますか? 単純なベクトルとリストだけで、複雑または奇妙なオブジェクトで動作する必要はありません。
編集: の出力ではなく、同一のオブジェクトを生成するためにコンソールに入力する必要がある文字列が必要ですprint(object)
。
Python のrepr
関数や Lisp のprin1-to-string
. そのような関数はRに存在しますか? 単純なベクトルとリストだけで、複雑または奇妙なオブジェクトで動作する必要はありません。
編集: の出力ではなく、同一のオブジェクトを生成するためにコンソールに入力する必要がある文字列が必要ですprint(object)
。
あなたがリストした Python/Lisp 関数には詳しくありませんが、 または のいずれかが必要だと思いdput
ますdump
。
x <- data.frame(1:10)
dput(x)
dump("x", file="clipboard")
?evaluate
評価パッケージを参照してください。
print(object)
編集:ポスターは後でコメントで、出力を保持する文字列ではなく、オブジェクトを再構築するコマンドが必要であることを明確にしました。その場合、それevaluate
は望まれることではありませんが( Joshua Ullrichdput
がコメントですでに述べたように、そして私が投稿したので回答に転送されました)、機能します。 少なくともWindowsでクラシックグラフィックスを保存して再プロットします。最後のラティスグラフィックスオブジェクトを取得します。また、インタラクティブコンソールで最後の値を保持していることにも注意してください。dump
recordPlot
replayPlot
trellis.last.object
.Last.value
まったく同じ質問がありました。これには何かが組み込まれているのか、それとも自分で書く必要があるのか 疑問に思っていました. 組み込みのものが見つからなかったので、次の関数を作成しました。
dputToString <- function (obj) {
con <- textConnection(NULL,open="w")
tryCatch({dput(obj,con);
textConnectionValue(con)},
finally=close(con))
}
dgetFromString <- function (str) {
con <- textConnection(str,open="r")
tryCatch(dget(con), finally=close(con))
}
これはあなたが望むことだと思います。ここにテストがあります:
> rep <- dputToString(matrix(1:10,2,5))
> rep
[1] "structure(1:10, .Dim = c(2L, 5L))"
> mat <- dgetFromString(rep)
> mat
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
あなたが使用することができますcapture.output
:
repr <- function(x) {
paste(sprintf('%s\n', capture.output(show(x))), collapse='')
}
行番号のないバージョンの場合、これらの行に沿った何かが機能するはずです。
repr <- function(x) {
cat(sprintf('%s\n', capture.output(show(x))), collapse='')
}