是否有可能在 R 中序列化对象的结构。我所说的序列化是指类似于utils::str()或base::structure()函数的东西。该函数工作得很好,但它们只是打印结构,而没有将其分配给变量的选项。
我尝试使用递归来做到这一点(只是为了获取类):
x <- list("aaa",
c("asd", "test", "asdfre"),
b = list("bbbb"),
c1 = as.list(c("l1", "l2")),
c = list("aaa",
b = "bbbbb",
list("aaa",
s = c(123, 122)),
l = list(a = list("aa",
"bb"),
b = c(12, 123))))
getStructure <- function(x){
if(!is.list(x)){
return(list(class(x)))
} else{
sapply(x, function(x) { if(!is.null(x)) getStructure(x) })
}
}
getStructure(x)
Run Code Online (Sandbox Code Playgroud)
str()但它的工作方式与和函数的工作方式不同structure()。
capture.output是捕获通常打印到控制台的任何内容的一般方法。
x = capture.output(str(mtcars))
Run Code Online (Sandbox Code Playgroud)