R语言入门——控制台结果的重用

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到更好个性化的结果。

发布了27 篇原创文章 · 获赞 82 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_46111814/article/details/105552831