帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:assignment  rep  分派  REPO  Repository  
Repository for Programming Assignment 2 for R Programming on Coursera

  • 源代码名称:ProgrammingAssignment2
  • 源代码网址:http://www.github.com/rdpeng/ProgrammingAssignment2
  • ProgrammingAssignment2源代码文档
  • ProgrammingAssignment2源代码下载
  • Git URL:
    git://www.github.com/rdpeng/ProgrammingAssignment2.git
  • Git Clone代码到本地:
    git clone http://www.github.com/rdpeng/ProgrammingAssignment2
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/rdpeng/ProgrammingAssignment2
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • 简介

    第二个编程任务要求你编写一个 R 函数,它能够缓存潜在的耗时计算。 例如取数值向量的平均值通常是一个快速运算。 但是,对于一个非常长的矢量,计算这个平均值需要太长时间,尤它的是如果需要重复计算( 比如 ) 。 在循环中,如果一个向量的内容没有变化,那么可以以缓存值的值,而不是重新计算。 在这个编程任务中,你将利用 R 语言的范围规则,以及如何操作它们来保持 R 对象内部的状态。

    示例:缓存向量的平均值

    在这个例子中我们引入 <<- 操作符,它可以为在一个与当前环境不同的环境中赋值给对象的值。 下面是用于创建一个特殊对象的两个函数,这些对象存储一个数字向量并缓存它的平均值。

    函数 makeVector 创建一个特殊的"矢量",它实际上是一个包含

    • 设置向量的值
    • 获取向量的值
    • 设置平均值的值
    • 获取平均值的值
    makeVector <- function(x = numeric()) {
     m <- NULL
     set <- function(y) {
     x <<- y
     m <<- NULL
     }
     get <- function() x
     setmean <- function(mean) m <<- mean
     getmean <- function() m
     list(set = set, get = get,
     setmean = setmean,
     getmean = getmean)
    }

    以下函数计算用上述函数创建的特殊"矢量"的平均值。 但是,它首先检查平均值是否已经被计算。 如果是的话,它是缓存的平均值,跳过计算。 否则,它计算数据的平均值,并通过 setmean 函数设置缓存中平均值的值。

    cachemean <- function(x,.. .) {
     m <- x$getmean()
     if(!is.null(m)) {
     message("getting cached data")
     return(m)
     }
     data <- x$get()
     m <- mean(data,.. .)
     x$setmean(m)
     m
    }

    赋值:缓存矩阵的逆

    矩阵反转通常是一个代价高昂的计算,而缓存矩阵的逆可能会有一些好处,而不是重复地计算矩阵的值。 你的任务是写一对函数来缓存矩阵的逆。

    编写以下函数:

    • makeCacheMatrix: 这个函数创建一个特殊的"矩阵"对象,可以以缓存。
    • cacheSolve: 这里函数计算上面的makeCacheMatrix 返回的特殊"矩阵"的逆。 如果反求已经被计算为( 矩阵还没有改变),那么 cacheSolve 应该从缓存中检索逆。

    计算平方矩阵的逆可以用 solve 函数在 R 中完成。 例如如果 X 是一个平方可逆矩阵,那么 solve(X) 返回它的逆。

    对于这个赋值,假设提供的矩阵总是可逆的。

    要完成这里任务,你必须执行以下操作:

    • 中包含存根 R 文件的GitHub存储库,以在自己的帐户中创建副本。
    • 在你的计算机上克隆分叉GitHub存储库,以便你可以在自己的机器上本地编辑文件。
    • 编辑包含在git存储库中的R 文件并将你的解决方案放在该文件( 请不要重命名文件) 中。
    • 在你的git存储库中提交完整的R 文件,并将 git branch 推到你的帐户下的GitHub存储库。
    • 提交到Coursera存储库的URL,它的中包含完成的分配的R 代码。

    分级

    这项作业将通过对等评估进行分级。



    文章标签:rep  REPO  Repository  分派  assignment  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语