我想得到一个列表的字符串表示,可用于重新创建具有相同值的列表。
我正在搜索的内容类似于Python repr()
函数。
model = list(name='ugarch', spec=list(garchOrder = c(1, 1)))
str = str_repr(model)
# str should be equal to "list(name='ugarch', spec=list(garchOrder = c(1, 1)))"
有没有办法在R中执行此操作?
答案 0 :(得分:0)
dput
函数几乎执行您想要的操作:它尝试将对象解压缩为ASCII文本表示形式。但是,它不适合编程:字符串表示写入stdout或文件(默认是写入控制台),实际输出只是输入的不可见副本:
dput(list(x = 1))
## structure(list(x = 1), .Names = "x")
y <- dput(list(x = 1))
## structure(list(x = 1), .Names = "x")
y
## $x
## [1] 1
class(y)
## [1] "list"
但是,您可以使用dput
和capture.output
编写具有所需行为的函数:
repr <- function(x) {
y <- capture.output(dput(x))
paste(y, collapse = '')
}
z <- repr(list(x = 1))
z
## [1] "structure(list(x = 1), .Names = \"x\")"
class(z)
## [1] "character"