99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀R語言編程基礎(chǔ)篇(1)
R語言編程基礎(chǔ)篇(1)
2015-09-17
收藏

R語言編程基礎(chǔ)篇(1)



1. 建立多維數(shù)組

array(1:36, dim = c(2, 2, 3, 3))

2. 使用list.files函數(shù)遍歷文件夾中的文件

比如列出當(dāng)前工作目錄下的所有文件

list.files(getwd())

[1] "1.pdf" "10plots.pdf"

[3] "140408696.txt" "1plots.pdf"

[5] "2plots.pdf" "3plots.pdf"

還可以設(shè)置正則表達式來過濾文件

列出當(dāng)前工作目錄下所有的R語言源代碼文件

list.files(getwd(),pattern = '*.[R|r]$')

[1] "Ask.R" "gg.R"

3. 用sciplot包的畫boxplot圖

#加載數(shù)據(jù)

library(MASS)

cab<-data.frame(cabbages)

cab[1,]

library(sciplot)

bargraph.CI(Cult, HeadWt, group =Date , data =cab,

xlab = NA, ylab = NA, cex.lab = 1.5, x.leg = 1,

col = "black", angle = 45, cex.names = 1.25,

density = c(0,20,100), legend = TRUE,ylim=c(0,5))

box()

bargraph.CI(Date,HeadWt, group =Cult , data =cab,

xlab = NA, ylab = NA, cex.lab = 1.5, x.leg = 1,

col = "black", angle = 45, cex.names = 1.25,

density = c(0,20), legend = TRUE,ylim=c(0,5))

box()

在這個boxplot中,不用自己計算均值和誤差,也不用自己調(diào)整數(shù)據(jù)結(jié)構(gòu),不用轉(zhuǎn)化為matrix,很方便。

4. 多系列圖

x<-seq(from = 1,to = 9,by =2)

y<-seq(from = 2,to = 10,by= 2)

barplot(rbind(x,y),beside=T,col=heat.colors(2))

5. 應(yīng)該注意避免使用的變量名

R語言中預(yù)定義了大量函數(shù),有些函數(shù)名相當(dāng)簡單,比如c()函數(shù),根據(jù)本人的實踐經(jīng)驗,應(yīng)該避免使用過于簡單的變量名,以免與R語言已有名稱沖突,而出現(xiàn)意想不到的錯誤。自己取變量名字是,最好能加上自己的一些特征,比如公司縮寫,比如本人公司首字母縮寫為MS,則本人使用的變量名都以MS開頭,然后接下劃線,比如MS_Alarm,MS_Books等等。

以下是盡量應(yīng)該避免使用的變量名:

單個字符:a,b,c,d,…,x,y,z,A,B,…,X,Y,Z,

已經(jīng)被R語言使用的名字:data,names,dim,seq,…

另外,命名新變量時,應(yīng)該先檢查一下變量名是否已經(jīng)存在。

可以使用get()函數(shù)查詢變量名,看是否有返回值。

6. Windows環(huán)境下,R語言調(diào)用C語言庫

1.安裝Rtools,http://www.murdoch-sutherland.com/Rtools/Rtools.exe這個在寫R包時要用,當(dāng)然這里不會提到。

2.配置環(huán)境變量,“我的電腦”–>“屬性”–>“高級”–>“環(huán)境變量”–>“系統(tǒng)變量”–>PATH,在后面添加:D:\Rtools\bin; D:\Rtools\perl\bin;D:\Rtools\MinGW\bin;D:\R-2.8.1\bin(前三個取決于Rtools的安裝位置,最后一個取決于R安裝的位置)

3.編寫C代碼(命名為fac3.c),下面程序得到i*j*k(1<=i,j, k<=n)的和,注意:參數(shù)必須用指針表示(對應(yīng)R中的向量),且編寫的C函數(shù)不能有顯式返回值,即函數(shù)返回要聲明為void;(參見http://www.wentrue.net/blog/?p=72,該文是在linux下的。)

voidfac3(double *n, double *m){

*m=0;

int i,j,k;

for(i=1;i<=*n;i++){

for(j=1;j<=*n;j++){

for(k=1;k<=*n;k++){

*m=*m+i*j*k;

}

}

}

}

4.編譯C,在DOS中(fac3.c所在的文件夾下)輸入RCMD SHLIB fac3.c

即可得到.dll文件

5.R中調(diào)用,并與R做循環(huán)的速度進行比較

dyn.load("fac3.dll")

system.time(out<-.C("fac3",a=1000,b=1))#第一個參數(shù)對應(yīng)C中的函數(shù)名

我的老機上運行時間:

user system elapsed

6.67 0.00 6.81

再看看R中的速度

n= 100

m= 0

system.time(for (iin1:n) {

for (jin1:n) {

for (kin1:n) {

m = m + i * j * k

}

}

})

user system elapsed

7.34 0.00 7.44

通過比較可以發(fā)現(xiàn),調(diào)用的C做了1000^3次循環(huán)比R中做了100^3循環(huán)的速度還快!


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }