R等价于Stata的'总结'?

时间:2015-04-23 22:35:44

标签: r stata apply

在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,对吗?

1 个答案:

答案 0 :(得分:1)

您可以使用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))
})

您可能希望根据您拥有的数据进行更改,但它应该可以正常工作。

为列表/数据框添加了一些递归。

如果你想让它与列表和单个数据框列一起使用,我会检查这些类并使用as.environment从列表/框架中获取变量。如果你愿意的话,我可以告诉你一个更明确的方法。