继续学R:安装软件包
昨天学习了一下如何在Linux(Ubuntu )下装R(还好我们学的是R语言,而不是B语言😰),并且简单测试了一下如何使用。详情可以参考《学R:准备工作》,今天来继续学R。
(图片从 @dapeng 的帖子里偷的)
运行脚本
昨天我摸索出来执行R脚本的命令为:
R --slave -f hello.R
今天发现原来有一个专门的指令做这个工作:
Rscript
比如对于上述命令,我们可以修改为:
Rscript hello.R
除此之外,我们还可以用-e
来直接执行一些语句,比如:
Rscript -e "1+1"
Rscript -e 'print("Hello World");'
Rscript -e "print(\"Hello World\");"
Rscript -e "print(\"Hello World\");1+1;2+2"
安装软件包
在使用Python语言时,我们知道可以使用pip
指令来安装所需的软件包,那么R语言环境下,我们如何安装呢?答案是在R环境的提示符下直接使用类似如下指令即可:
install.packages("example_package")
比如我想安装一个caTools的东西(我也不知道是啥),这样做就可以鸟:
install.packages("caTools")
注:我是在普通用户账户下执行的R,所以执行上述指令是会提示我:
Would you like to use a personal library instead? (y/n) y
也就是说数据包被安装的本地,如果想安装到全局,估摸应该用sudo R
来启动R环境(我瞎猜的,本地安装挺好,就不去测试了)
加载安装好的软件包,使用类似如下指令即可:
library(caTools)
见识一下
尽管"Hello World!"已经超级强大了,但是还是想见识一下更加强大的功能,在R语言的维基百科页面有一个曼德勃罗集合(Mandelbrot set)的例子,略作修改拿来运行一下,长长见识。
#install.packages("caTools") # install external package
library(caTools) # external package providing write.gif function
jet.colors <- colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan", "#7FFF7F",
"yellow", "#FF7F00", "red", "#7F0000"))
dx <- 400 # define width
dy <- 400 # define height
C <- complex(real = rep(seq(-2.2, 1.0, length.out = dx), each = dy),
imag = rep(seq(-1.2, 1.2, length.out = dy), dx))
C <- matrix(C, dy, dx) # reshape as square matrix of complex numbers
Z <- 0 # initialize Z to zero
X <- array(0, c(dy, dx, 20)) # initialize output 3D array
for (k in 1:20) { # loop with 20 iterations
Z <- Z^2 + C # the central difference equation
X[, , k] <- exp(-abs(Z)) # capture results
}
write.gif(X, "Mandelbrot.gif", col = jet.colors, delay = 25)
虽然不知道是什么鬼,但是很漂亮,不是吗?
最近掀起学R的热潮啊!
大鹏曰:客官,来玩啊~~
看起来有点像是细胞分裂😂
btw,现在刷steemit有种感觉被两个老师监督念书的赶脚(´▽`)
@dancingapple O哥親自教授
打卡
o哥这个例子跟你帖子里拍那张书页里的“康威生命游戏”是类似的
我这一回家就马上打开电脑学习了……本想闲云野鹤,万万没想到😂
打卡奖励 💰💰
哈哈,蟹蟹奖励
谢谢o哥为我们学 R 摇旗呐喊!
我那书主要是为 windows 用户写的。考虑到 linux 用户都善于折腾,所以就只是提了一嘴,没做详细介绍。不过,如果有 o 哥的帖子做指导,linux 用户会省很多事。
o 哥可否授权允许把这两篇帖子(以及后续)转载到 《学 R》一书的主页 http://xuer.pzhao.net ?
哈哈,我就是凑热闹瞎玩的
要是觉得有用随便转载
点赞。回复。赖不掉了。
still "hello world" again, but i will try to follow this until end :)