R极简教程-4:R语言工作空间

来源:互联网 发布:沉迷网络的危害小短文 编辑:程序博客网 时间:2024/06/05 09:34

R语言工作空间值得就是交互框,之前我们已经简单介绍过那个交互框的功能。在这里我们详细地梳理一下:

运行代码

毫无疑问,你可以直接输入,复制,粘贴代码到交互框来进行运行,比如输出一个Hello World!

print("Hello World")

值得注意的是,R函数括号必须是英文字符,不能是中文的。所以“()”(英文括号)和“()“(中文括号)不是一回事儿。

作图

我们输入一行简单的做图代码:

plot(density(rnorm(1000,0,1)))

这里写图片描述

在右下角就会出现一副正态分布的曲线图像。再上面的代码里,我们首先生成了一组数据,用的是命令rnorm(1000,0,1),这一行命令可以基于均值0和标准差1生成1000个数据点。然后我们再这一行名另外,包裹了一层函数,density(),这是一个用来计算数据的分布的函数。然后我们调用函数plot(),来将这一曲线绘制出来。

查看函数说明

R语言的每一个函数都必须有说明,这是再R包上线发布之前硬性要求的,这样做的好处就是,每一个函数都会有一个相应地说明文档。在我们不知道一个函数怎么用的时候,就可以查看说明文档。调用说明文档的方法很简单,就是再函数前面加一个问好?:

?plot

用上边的代码,我们就可以知道plot这个函数的功能、用法等等信息。
这里写图片描述
右下角,出现了有关于这个函数的说明文档。伴随着R包升级换代,说明文档是会发生变化的。这也是R语言的一个不足,经常你写的R包引用了别人的包,然后别人的R包更新了,导致你的程序也跟着出问题。

总而言之,无论什么时候,你搞不清一个函数是做什么的,就可以用这个方法去查询。(当然Google也是好办法)

查看源代码

R语言可以很方便地让你查看每一个函数的源代码,其实严格来说,其原因是每一个函数都是一系列复制给了一个变量,你只不过是查看了这个变量而已。不过这确实让人们可以很轻易地查看R里的函数源代码。

比如说,我们想要查看lm这个函数的源代码,只需要直接输入lm,不加括号就可以实现:

> lmfunction (formula, data, subset, weights, na.action, method = "qr",     model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE,     contrasts = NULL, offset, ...) {    ret.x <- x    ret.y <- y    cl <- match.call()    mf <- match.call(expand.dots = FALSE)    m <- match(c("formula", "data", "subset", "weights", "na.action",         "offset"), names(mf), 0L)    mf <- mf[c(1L, m)]    mf$drop.unused.levels <- TRUE    mf[[1L]] <- quote(stats::model.frame)    mf <- eval(mf, parent.frame())    if (method == "model.frame")         return(mf)    else if (method != "qr")         warning(gettextf("method = '%s' is not supported. Using 'qr'",             method), domain = NA)    mt <- attr(mf, "terms")    y <- model.response(mf, "numeric")    w <- as.vector(model.weights(mf))    if (!is.null(w) && !is.numeric(w))         stop("'weights' must be a numeric vector")    offset <- as.vector(model.offset(mf))    if (!is.null(offset)) {        if (length(offset) != NROW(y))             stop(gettextf("number of offsets is %d, should equal %d (number of observations)",                 length(offset), NROW(y)), domain = NA)    }    if (is.empty.model(mt)) {        x <- NULL        z <- list(coefficients = if (is.matrix(y)) matrix(, 0,             3) else numeric(), residuals = y, fitted.values = 0 *             y, weights = w, rank = 0L, df.residual = if (!is.null(w)) sum(w !=             0) else if (is.matrix(y)) nrow(y) else length(y))        if (!is.null(offset)) {            z$fitted.values <- offset            z$residuals <- y - offset        }    }    else {        x <- model.matrix(mt, mf, contrasts)        z <- if (is.null(w))             lm.fit(x, y, offset = offset, singular.ok = singular.ok,                 ...)        else lm.wfit(x, y, w, offset = offset, singular.ok = singular.ok,             ...)    }    class(z) <- c(if (is.matrix(y)) "mlm", "lm")    z$na.action <- attr(mf, "na.action")    z$offset <- offset    z$contrasts <- attr(x, "contrasts")    z$xlevels <- .getXlevels(mt, mf)    z$call <- cl    z$terms <- mt    if (model)         z$model <- mf    if (ret.x)         z$x <- x    if (ret.y)         z$y <- y    if (!qr)         z$qr <- NULL    z}<bytecode: 0x000000000605d848><environment: namespace:stats>> 

运行脚本

再很多时候,你不想每一次跑程序都很重新些,也不想要复制粘贴。所以可以写成R脚本的形式,然后直接运行。R脚本就是普通的文件,只需要再命名文件的时候,结尾用.R来结尾就行了。运行R脚本的方式有很多,不过最常用的大概有两种,一个与交互框有关——通过source()命令运行,另一种是直接再bash命令中调用Rscript运行。

区别在于,前一种运行完了,所有结果都会被保存下来再交互框中。而后一个什么也不会留下。

下面假设我们写了一个小的R脚本,命名为TestScript.R:
这里写图片描述

点击以后,左上方的区域就会变成写脚本的地方,然后脚本内容如下:

# Test Script by Yuan Tiandata(iris)boxplot(iris[,1:4])plot(hclust(dist((iris[,1:4]))))

保存的时候,RSutdio会提示你保存的位置,我建议就在默认目录。

然后再下方的console框,我们输入source("./TestScript.R")就可以运行这个脚本:
这里写图片描述
其实我们输出了两幅图,但是右边只能看到一副,因为前一副被盖掉了。如果程序有错,source运行的时候,会报错的。

基本上上述就是R交互框的使用方法,这是R语言中最重要也是最常用的工具。

原创粉丝点击