00引言
在使用R语言建模时,由于各种需求。常常需要对控制台的结果进行重用,计算或者使用数据进行可视化。本文总结三种方法来帮助大家实现这个问题。主要的方法大体有三种。
- 找到函数的原函数代码,修改输出格式和需要的结果。
- 强制转换输出结果。达到可以取用的效果
- 使用
capture.output
函数来获取控制台的结果。通过字符分割函数正则表达式来处理结果。
1、找到源函数代码
# 有的代码下面这个格式:
fun <- function(){
list(a=a,b=b,c=c)
}
# 这样的可以通过修改list返的返回参数来修改返回结果。
当然很多函数模型包装的很好,无法找到这个返回项目,比如下面的函数
> var
function (x, y = NULL, na.rm = FALSE, use)
{
if (missing(use))
use <- if (na.rm)
"na.or.complete"
else "everything"
na.method <- pmatch(use, c("all.obs", "complete.obs",
"pairwise.complete.obs", "everything", "na.or.complete"))
if (is.na(na.method))
stop("invalid 'use' argument")
if (is.data.frame(x))
x <- as.matrix(x)
else stopifnot(is.atomic(x))
if (is.data.frame(y))
y <- as.matrix(y)
else stopifnot(is.atomic(y))
.Call(C_cov, x, y, na.method, FALSE)
}
<bytecode: 0x00000000156ecd50>
<environment: namespace:stats>
这时就应该使用下面两种方法:
2、强制转换输出结果的数据类型
这里只介绍常用的一些操作数据类型的函数;
函数 | 作用 |
---|---|
class | 查看数据的数据类型 |
str | 查看每个变量的类型 |
edit | 直观的看到结果的部分 |
summary | 查看结果的摘要 |
as.list | 强制转化函数。类似的还有as.matrix、as.data.frame等函数 |
3、使用capture.output
这个函数可以把控制台输出的东西捕捉下来,我们可以处理这些结果,匹配我们想要的。这里给个这个函数示例:
> mean
function (x, ...)
UseMethod("mean")
<bytecode: 0x00000000052ee198>
<environment: namespace:base>
> capture.output(mean)
[1] "function (x, ...) " "UseMethod(\"mean\")"
[3] "<bytecode: 0x00000000052ee198>" "<environment: namespace:base>"
> capture.output(var)
[1] "function (x, y = NULL, na.rm = FALSE, use) "
[2] "{"
[3] " if (missing(use)) "
[4] " use <- if (na.rm) "
[5] " \"na.or.complete\""
[6] " else \"everything\""
[7] " na.method <- pmatch(use, c(\"all.obs\", \"complete.obs\", \"pairwise.complete.obs\", "
[8] " \"everything\", \"na.or.complete\"))"
[9] " if (is.na(na.method)) "
[10] " stop(\"invalid 'use' argument\")"
[11] " if (is.data.frame(x)) "
[12] " x <- as.matrix(x)"
[13] " else stopifnot(is.atomic(x))"
[14] " if (is.data.frame(y)) "
[15] " y <- as.matrix(y)"
[16] " else stopifnot(is.atomic(y))"
[17] " .Call(C_cov, x, y, na.method, FALSE)"
[18] "}"
[19] "<bytecode: 0x00000000156ecd50>"
[20] "<environment: namespace:stats>"
4、总结
祝大家可以随心的使用R结果,get到更好个性化的结果。