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语言中最重要也是最常用的工具。
- R极简教程-4:R语言工作空间
- R极简教程-10:R语言绘图基础
- R:工作空间
- 管理R语言工作空间的函数的使用
- R语言基本教程
- R 语言学习教程
- R语言函数环境空间
- R语言教程(一)
- R语言教程(二)
- 93、R语言教程详解
- R极简教程-3:R及RStudio的安装
- R环境中的工作空间(workspace)
- R语言系列4
- 空间数据分析与R语言实践
- R语言基础:管理工作空间的函数
- 解密R语言函数的环境空间
- R极简教程-5:包
- R极简教程-6:基本语法
- PHP 封装ajax返回数据格式
- Oracle数据库与客户端版本协调
- Log相关工具类
- hiho一下[156周]:岛屿
- CR5000_BD设计过程中文书说明书
- R极简教程-4:R语言工作空间
- Qt中关于undefined reference to `vtable for classname`的问题
- 输入“git remote add origin”提示fatal:remote origin already exists
- 第二章 类型、值和变量的笔记摘要
- CYQ.Data V5 分布式自动化缓存设计介绍(二)
- iOS开发之如何应对苹果app的ipv6时代?
- spring beans xml文件头的生成
- [Python/转换大写/小写/判断升序/降序]
- 简单的RPC框架实现-转载