導航:首頁 > 源碼編譯 > R函數編譯

R函數編譯

發布時間:2022-06-05 17:20:46

㈠ R軟體的入門教程及R語言的編譯

建議讀一下《R語言經典實例》

㈡ r語言編譯器

  1. r語言是個語言環境,rstudio是編譯器。

  2. 實際上直接用r進行數據分析也不是不可以,但是個人使用經驗,在debugging的時候不太方便。

  3. rstudio本身能幫你完成模糊拼寫,特別是在你不特別清楚應該使用具體哪一個函數的時候。

  4. 可視化方面更好,代碼能夠展示得更加清晰。

  5. rstudio能夠直接幫助更新或者下載個中packages

  6. 具體使用看個人習慣吧。

    以上。

㈢ 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

閱讀全文

與R函數編譯相關的資料

熱點內容
手游我的世界租的伺服器怎麼添加mod 瀏覽:552
java中的Ascii 瀏覽:497
php白盒測試工具 瀏覽:574
男人命令女人 瀏覽:166
全球編程語言排名 瀏覽:785
某百度程序員中午面試 瀏覽:614
程序員劉亦菲的樣子 瀏覽:303
java獲取伺服器的時間格式 瀏覽:69
什麼是java中的多態 瀏覽:330
html包含php文件 瀏覽:359
程序員睡覺少感覺不到困 瀏覽:921
空調壓縮機工作電壓 瀏覽:202
夢幻西遊浙江二區伺服器雲主機 瀏覽:250
什麼樣的人才叫程序員 瀏覽:125
ipad如何解壓縮文件下載 瀏覽:225
知網程序員 瀏覽:706
怎麼把電子版投標報價加密 瀏覽:33
電腦安全編譯器 瀏覽:369
在伺服器里如何調創造 瀏覽:839
知雲登錄為什麼找不到伺服器 瀏覽:819