㈠ R软件的入门教程及R语言的编译
建议读一下《R语言经典实例》
㈡ r语言编译器
r语言是个语言环境,rstudio是编译器。
实际上直接用r进行数据分析也不是不可以,但是个人使用经验,在debugging的时候不太方便。
rstudio本身能帮你完成模糊拼写,特别是在你不特别清楚应该使用具体哪一个函数的时候。
可视化方面更好,代码能够展示得更加清晰。
rstudio能够直接帮助更新或者下载个中packages
具体使用看个人习惯吧。
以上。
㈢ R语言怎么写函数
R语言实际上是函数的集合,用户可以使用base,stats等包中的基本函数,也可以自己编写函数完成一定的功能。但是初学者往往认为编写R函数十分困难,或者难以理解。这里对如何编写R函数进行简要的介绍。
函数是对一些程序语句的封装。换句话说,编写函数,可以减少人们对重复代码书写,从而让R脚本程序更为简洁,高效。同时也增加了可读性。一个函数往往完成一项特定的功能。例如,求标准差sd,求平均值,求生物多样性指数等。R数据分析,就是依靠调用各种函数来完成的。但是编写函数也不是轻而易举就能完成的,需要首先经过大量的编程训练。特别是对R中数据的类型,逻辑判别、下标、循环等内容有一定了解之后,才好开始编写函数。
对于初学者来说,最好的方法就是研究现有的R函数。因为R程序包都是开源的,所有代码可见。研究现有的R函数能够使编程水平迅速提高。
R函数无需首先声明变量的类型,大部分情况下不需要进行初始化。一个完整的R函数,需要包括函数名称,函数声明,函数参数以及函数体几部分。
1.
函数名称,即要编写的函数名称,这一名称就作为将来调用R函数的依据。
2.
函数声明,包括
<-
function,
即声明该对象的类型为函数。
3.
函数参数,这里是输入的数据,函数参数是一个虚拟出来的一个对象。函数参数所等于的数据,就是在函数体内部将要处理的值,或者对应的数据类型。
函数体内部的程序语句进行数据处理,就是对参数的值进行处理
,这种处理只在调用函数的时候才会发生。函数的参数可以有多种类型。R
help的界面对每个函数,及其参数的意义及所需的数据类型都进行了说明。
4.
函数体
常常包括三部分.
(1).
异常处理
输入的数据不能满足函数计算的要求,或者类型不符,
这时候一定要设计相应的机制告诉用户,输入的数据在什么地方有错误。
错误又分为两种。
第一种,
如果输入的数据错误不是很严重,可以经过转换,变为符合处理要求的数据时,
此时只需要给用户一个提醒,告知数据类型不符,但是函数本身已经
进行了相应的转换。
第二种,数据完全不符合要求,这种情况下,就
要终止函数的运行,而告知因为什么,函数不能运行。这样,用户在
使用函数的情况先才不至于茫然。
(2).
运算过程
包括具体的运算步骤。
运算过程和该函数要完成的功能有关。
R运算过程中,应该尽量减少循环的使用,特别是嵌套循环。R提供了
apply,replicate等一系列函数,来代替循环,应该尽量应用这些函数,
提高效率。
如果在R中实在太慢,那么核心部分只能依靠C或者Fortran
等语言编写,然后再用R调用这些编译好的模块,达到更高的效率。
运算过程中,需要大量用到if等条件作为判别的标准。if和while都是需要数据TRUE/FALSE这样的逻辑类型变量,这就意味着,if内部,往往是对条件的判别,例如
is.na,
is.matrix,
is.numeric等等,或者对大小的比较,如,if(x
>
0),
if(x
==
1),
if(length(x)==
3)等等。if后面,如果是1行,则花括号可以省略,否则就必须要将所有的语句都放在花括号中。这和循环是一致的。
例子:
##
if与条件判断
fun.test
<-
function(a,
b,
method
=
"add"){
if(method
==
"add")
{
##
如果if或者for/while;
res
<-
a
+
b
##
等后面的语句只有一行,则无需使用花括号。
}
if(method
==
"subtract"){
res
<-
a
-
b
}
return(res)
##
返回值
}
###
检验结果
fun.test(a
=
10,
b
=
8,
method
=
"add")
fun.test(a
=
10,
b
=
8,
method
=
"substract")
㈣ 在编写R语言的函数中,怎么使用“...”参数 急急急
z <- function(c, b, a){ x(a) + y(b) + c}
z(c =2, b=2, a=2);就可以解决了,没必要一定要...吧;
关于...的问题,我先想想,明天再来回答你;
㈤ R语言中如何编写自己的函数初步入门
最简单的方法就是每次引用时把写好的函数复制一下,到R console 中,然后写其他的。然后,编好的函数写成.r 文件,下次直接使用命令 source(function.r)就能导入使用了.
㈥ 在用R语言编程中,界面上出现了“+”号,是什么意思如何删除错误的输入,如何清屏谢谢
“+”标示语句没有闭合,比如在循环中,在分支中,或者写函数等,分多行都会有加号;
直接键盘按Esc键退出就可以把+号去掉,恢复正常的编辑状态。清屏用快捷键Ctrl+L 就可以清除所有编辑的语句。
例如;
td<-function(fx,a,b,r){ #(fx:是表达式,方程是fx=0,变量是x;a,b,区间[a,b],r是精度。
x<-a;da<-eval(fx);
调用函数:
fx<-expression(x*x-x-1);
a<-1;b<-2;r<-1e-5;
td(fx,a,b,r);
(6)R函数编译扩展阅读:
R语言有程序的控制结构和函数function。尽管R语言是解释型语言,但是可以用编译的方式实现,调用方法是source(file.R)命令。R语言的软件包能在编程环境中,通过子菜单下载后安装,因此是无障碍的。
程序中加载软件包的命令,
>library(parallel) #并行计算软件包,单线程多核
查找软件包中所有函数,
>library(help=parallel)
>help(packet=parallel)
R语言和解释型语言一样,没有变量声明。R语言能编写c++程序,应用Rcpp软件包。
㈦ 如何在windows中编写R程序包
在Windows环境下如何编写R程序包,即生成供linux环境编译运行的tar.gz文件,也生成供windows下使用的.zip文件呢?其实并不复杂,只要下载一些工具软件,按照相应的步骤填写相应的“表格”,继而运行一些简单的指令,就可以生成R的程序包了。
编写R程序包通常包括以下几步:
(1) 工具软件Rtools的安装和备选软件的安装。
(2) r脚本的准备,也就是用来生成程序包的函数脚本。
(3) 利用R中自带的package.skeleton()函数,生成制作包所需要的Description 文件和帮助文件帮助文件.rd。
(4) 编辑该函数生成的Description 文件和帮助文件.rd
(5) 在windows cmd的命令行中输入相应的命令,生成zip文件或者.tar.gz
下面我们来一起建立只有一个函数的R程序包,来详细说明:
一 工具软件安装和配置
制作r包的工具软件包括Rtools,HTML编译器,MikTeX 或Cte等(备选软件不一定要安装):
1 工具软件安装
(1)Rtools(制作R包的主要工具)
Rtools是在windows下制作R包的一系列工具,其中包括
1) CYGWIN 在Windows下模拟UNIX环境
2) MinGW编译器,可用来编译C和Fortran语言。
3) Perl
下载地址: http://www.murdoch-sutherland.com/Rtools/
(2) 微软HTML编译器(备选):
用来从源文件生成HTML格式的帮助文件
下载地址:http://go.microsoft.com/fwlink/?LinkId=14188
(3) MikTeX 或CteX(备选)
用来生成pdf格式的帮助文件
下载地址:http://www.miktex.org/ www.ctex.org/
分别按照要求安装好。
2 设置文件启动路径:
我的电脑>属性>高级>环境变量>系统变量 PATH一项,点击“编辑”,检查是否具有以下路径,如果没有,需要手工添加:
c:\Rtools\bin;c:\Rtools\perl\bin;c:\Rtools\MinGW\bin; C:\CTEX\MiKTeX\miktex\bin;C:\CTEX\CTeX\ctex\bin;C:\CTEX\CTeX\cct\bin;C:\CTEX\CTeX\ty\bin;C:\CTEX\Ghostscript\gs8.64\bin;C:\CTEX\GSview\gsview;C:\CTEX\WinEdt;C:\Program Files\R\R-2.9.0\bin\;
设置启动路径的目的是在cmd命令行可以直接调用相应的exe文件。
如果只是简单制作一个个人使用的包,只需将c:\Rtools\bin;c:\Rtools\perl\bin;c:\Rtools\MinGW\bin; 添加到系统路径即可
二 R脚本的准备
假如现在我们已经有了一个编好的R函数,用来给出回归的精确结果,存成了r脚本的格式,文件名为linmod.r
其内容如下所示,那么该如何制作R程序包呢?
linmod<- function(x, y)
{
## compute QR-decomposition of x
qx <- qr(x)
## compute (x'x)^(-1) x'y
coef <- solve.qr(qx, y)
## degrees of freedom and standard deviation of resials
df <- nrow(x)-ncol(x)
sigma2 <- sum((y - x%*%coef)^2)/df
## compute sigma^2 * (x'x)^-1
vcov <- sigma2 * chol2inv(qx$qr)
colnames(vcov) <- rownames(vcov) <- colnames(x)
list(coefficients = coef,
vcov = vcov,
sigma = sqrt(sigma2),
df = df)
}
三 R包框架的准备
1 生成准备文件
登陆R :开始>所有程序>R>R.2.9.0
(1)清除内存中的对象:
rm(list=ls())
(2)设定工作目录,这里设定为 c:/pa
setwd("c:/pa")
(3)将制作包的源文件 linmod.r拷贝到c:/pa/文件夹下,
之后输入:
package.skeleton(name="linmod",code_files="c:/pa/linmod.r")
此时,R控制台中显示
Creating directories ...
Creating DESCRIPTION ...
Creating Read-and-delete-me ...
Saving functions and data ...
Making help files ...
Done.
Further steps are described in './linmod/Read-and-delete-me'.
>
可以看到c:/pa文件夹下新出现了一个linmod文件夹
该文件夹下的内容就是R包的框架,包括data文件夹,man文件夹,只要按要求将其填写完整,再进行相应的编译即可。
首先查看Read-and-delete-me文件
文件内容如下:
* Edit the help file skeletons in 'man', possibly combining help
files for multiple functions.
* Put any C/C++/Fortran code in 'src'.
* If you have compiled code, add a .First.lib() function in 'R' to
load the shared library.
* Run R CMD build to build the package tarball.
* Run R CMD check to check the package tarball.
Read "Writing R Extensions" for more information.
大致意思如下:
可以man文件夹下编辑帮助文件
C/C++/Fortran 的源代码应该放入src文件夹下
需要在登录时载入包
可以运行R CMD建立和检查相应的包
查看更多信息,应该阅读Writing R Extensions
2 编辑Description文件和rd文件
(1) Description文件的编辑
按照提示,填好各项
Package: linmod
Type: Package
Title: test for linear regression
Version: 1.0
Date: 2009-07-20
Author: helixcn
Maintainer: helixcn <[email protected]>
Description: To give the exactly results of linear regression.
License: GNU 2 or later
LazyLoad: yes
(2)man文件夹中.rd文件编辑
man文件夹中包含两个文件 linmod.Rd和linmod-package.Rd,分别是对linmod()函数和linmod包的介绍,下面逐项填写:
1) linmod.Rd
\name{linmod}
\Rdversion{1.1}
\alias{linmod}
%- Also NEED an '\alias' for EACH other topic documented here.
\title{
linear regression
}
\description{
to give the more exactly results of linear regression
}
\usage{
linmod(x, y)
}
%- maybe also 'usage' for other objects documented here.
\arguments{
\item{x}{
a numeric design matrix for the model
}
\item{y}{
a numeric vector of responses
}
}
\details{
%% ~~ If necessary, more details than the description above ~~
}
\value{
%% ~Describe the value returned
%% If it is a LIST, use
%% \item{comp1 }{Description of 'comp1'}
%% \item{comp2 }{Description of 'comp2'}
%% ...
}
\references{
Friedrich Leisch,2008 Creating R Packages: A Tutorial
}
\author{
helixcn
}
\note{
Please read Friedrich Leisch,2008
}
%% ~Make other sections like Warning with \section{Warning }{....} ~
\seealso{
%% ~~objects to See Also as \code{\link{help}}, ~~~
}
\examples{
##---- Should be DIRECTLY executable !! ----
##-- ==> Define data, use random,
##-- or do help(data=index) for the standard data sets.
## The function is currently defined as
function (x, y)
{
qx <- qr(x)
coef <- solve.qr(qx, y)
df <- nrow(x) - ncol(x)
sigma2 <- sum((y - x \%*\% coef)^2)/df
vcov <- sigma2 * chol2inv(qx$qr)
colnames(vcov) <- rownames(vcov) <- colnames(x)
list(coefficients = coef, vcov = vcov, sigma = sqrt(sigma2),
df = df)
}
}
% Add one or more standard keywords, see file 'KEYWORDS' in the
% R documentation directory.
\keyword{ ~kwd1 }
\keyword{ ~kwd2 }% __ONLY ONE__ keyword per line
2)linmod-package.Rd
\name{linmod-package}
\Rdversion{1.1}
\alias{linmod-package}
\alias{linmod}
\docType{package}
\title{Linear Regression Modification}
\description{to Give the more exactly output of linear regression rather than R default}
\details{
\tabular{ll}{
Package: \tab linmod\cr
Type: \tab Package\cr
Version: \tab 1.0\cr
Date: \tab 2009-07-20\cr
License: \tab GNU 2.0 or later\cr
LazyLoad: \tab yes\cr
}
~~The aim of the package was to give the more exactly output of linear regression~~ linmod~~
}
\author{helixcn
Maintainer: helixcn <[email protected]>}
\references{
Friedrich Leisch,2008,Creating R Packages: A Tutorial
}
\seealso{lm}
\examples{
data(cats, package="MASS")
mod1 <- linmod(Hwt~Bwt*Sex, data=cats)
mod1
summary(mod1)
}
四 通过cmd创建R包
开始>运行>cmd
键入 cd c:\pa\ 将工作目录转移到c:/pa下
键入 Rcmd build --binary linmod 制作window zip包
键入 Rcmd build linmod 制作linux平台下可运行的tar.gz包
命令运行完之后可以发现,在c:/pa/文件夹下分别生成了linmod.zip和linmod.tar.gz压缩包。
注意R CMD 系列命令是在windows控制台下运行,而非R控制台
参考网址
[1]http://www.robjhyndman.com/researchtips/building-r-packages-for-windows/
[2]http://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf
[3]http://faculty.chicagobooth.e/peter.rossi/research/bayes%20book/bayesm/Making%20R%20Packages%20Under%20Windows.pdf
[4]http://www.biostat.uni-hannover.de/teaching/fallstudien/schaarschmidt2.pdf