R相当于Stata的'summarize'?

R equivalent of Stata's 'summarize'?

在 Stata 中,summarize 打印当前工作区中所有变量的简要统计摘要。在 R 中,summary(<myvariable>) 对特定的 <myvariable> 做了类似的事情。

问: 在 R 中,我应该如何打印工作区中所有相关变量的统计摘要?

我试过了:

x <- runif(4)
y <- runif(4)
z <- runif(3)
w <- matrix(runif(4), nrow = 2)

sapply(ls(), function(i) {if (class(get(i)) == "numeric") summary(get(i))})

接近我想要的。但它仍然打印

$w
NULL
...

这是不可取的。此外,当我的工作区中存在类型为闭包的变量时,此代码会引发错误...

我觉得我要进入这里的杂草丛中了。必须有一种更简单、直接的方法或多或少地在 R 中复制 Stata 的 summarize,对吗?

您可以使用 methods 来确定哪些变量类型适用于 summary

summary.methods = methods(summary)
check.method <- function(x){ 
  any(grepl(paste0('^summary\.',class(x)[1],'$'),summary.methods))
}
lapply(ls(), function(z,envir = .GlobalEnv) {
 obj = get(z)
 if (class(obj) %in% c('list','data.frame')
    Recall(names(obj),as.environment(obj))
 else if (check.method(obj))
  print(summary(obj))
 else
  print(paste0("No summary for: ",z))
})

您可能希望根据您拥有的数据量来更改此设置,但它应该有效。

为 list/data 帧添加了一些递归。

如果你想让它与列表和单个数据框列一起使用,我会检查那些 类 并使用 as.environment 从 list/frame 中获取变量。如果您愿意,我可以稍后向您展示更明确的方法。