tft每日頭條

 > 科技

 > r語言運行所有代碼的快捷鍵

r語言運行所有代碼的快捷鍵

科技 更新时间:2024-07-30 04:15:40
R開發的三重境界——語法、腳本及自主菜單封裝

R開發隻用GUI,才能成為真正的R開發者;

對于熟悉Rstudio的來說,可能覺得這樣講不公平,其實這才是最大的公平。

RGUI不容易上手,但是一旦熟悉起來就可以“突飛猛進”;而Rstudio很容易上手,其代價就是,熟悉後就隻能原地踏步了,這才是公平。

RGUI倒逼着開發者必須熟悉所有的函數指令及參數,對參數們的熟悉就是R開發的最大“本事”。跨過這個境界之後,就可以熟練編寫腳本了;腳本的熟練可以使開發者如虎添翼,迅速實現R開發的境界升級,即第二重境界。

#RGui winMenuAdd("***") winMenuAddItem('***1','***2','****3') winMenuNames() #查詢菜單并編輯菜單項目 wmn<-winMenuNames();wmn winMenuDel(wmn[5])

升級的下一重境界就是第三重境界,該境界就可以實現在RGUI上設計自定義菜單及指令,如下圖:

r語言運行所有代碼的快捷鍵(R語言高級開發程序員煉成記)1

這就是很普通的RGUI界面,加上開發者自己設計的菜單體系,每次啟動後,自動加載“菜單函數”腳本,馬上使你的開發環境升級。

r語言運行所有代碼的快捷鍵(R語言高級開發程序員煉成記)2

如果連遊戲功能的代碼都“懶得敲”,就使用“菜單”吧。

r語言運行所有代碼的快捷鍵(R語言高級開發程序員煉成記)3

雖然有的遊戲很老了,但是可以使用R自行開發喜歡的遊戲,而且很快速;完成之後隻要加載菜單,一步實現,隻是我對遊戲實在不太感冒,閑時“掃雷”、“五子棋”等就夠了。

r語言運行所有代碼的快捷鍵(R語言高級開發程序員煉成記)4

怎樣将R的自定義函數返回值傳遞給全局變量?

一般對自定義函數的調用方法是這樣的:

aaaa()

or:

ffff(x=12)

這種方式很簡單,實現不需要反饋數據的一些功能的實現;

但是,如果需要将函數的返回值傳遞程序的全局變量,可以通過調用時設置變量的方式實現。

如cc<-aaaa()

or:

eff<-bbbb(x=1,y=9)

怎樣實現自定義函數返回多組值?

S3類、S4類的區别

$是S3類的引用方式,@是S4類的引用方式。$比較常用,@比較少用;通常我們的data.frame, list. 向量等用$就可以。

S4也有例如,有個維恩包Vennerable:S4類型,想取得裡面IntersectionSets,信息必須用@符号。

R的自定義函數設置

當一個函數裡需要返回多個值(比如有變量、向量、矩陣)時,要用list,而不是return。

這時如果想提取某個變量的結果,就需要用到$,默認情況下,對于 `list`, `environment` 這兩種對象,`$`可以提取(extract)出裡面的元素。

”環境”(environment)是為了說明R的定位是一個完善、統一的系統,而非其他數據分析軟件那樣作為一個專門、不靈活的附屬工具。

#返回單組數值,隻能使用return() bbbb<-function(x=1) { x<-seq(-1,1,0.01) y<-1/(x*x) plot(x,y,type='l',tck=0.01,ann=F,lwd=5,col='blue') grid() return(x) } bbbb


r語言運行所有代碼的快捷鍵(R語言高級開發程序員煉成記)5


#返回多組數值,必須使用list() cccc<-function(x=1) { x<-seq(-10,10,0.1) y<-1/(x x) plot(x,y,type='l',tck=0.01,ann=F,lwd=5,col='blue') grid() list(x,y) } cccc cccc[[2]]

r語言運行所有代碼的快捷鍵(R語言高級開發程序員煉成記)6

四大類歸一化處理函數實例

經典的歸一化處理函數包括四種類型:sigmoid, mm, log, zscore;其函數腳本如下。

#要有正負分布,否則沒有意義; sigmoid<-function(x,a=1){1/(1 exp(-a*x))} sgm(cc) #[,1] mm<- function(x) {(x-min(x))/(max(x)-min(x))} mm<-mm(cc[,1]);mm lg<- function(x) {log(x,10)/log(max(x),10)} lg<-lg(cc[,1]);lg zs<- function(x) {(x-mean(x))/sd(x)} zs(cc[,1]) #也許因為結果有正負,必須用向量列,不能用df

在自定義函數的基礎上,就可以設計自定義菜單了。

RGUI自定義菜單及其封裝

以如下圖所示的菜單項“數據處理”為例,來說明其實現過程。

r語言運行所有代碼的快捷鍵(R語言高級開發程序員煉成記)7

#添加菜單項 winMenuAdd("數據處理") #添加菜單子項 winMenuAddItem("數據處理", "數據集載入", "cc<-aaaa()") # "aaaa()"——> "cc<-aaaa()" winMenuAddItem("數據處理", "數據特征", "bb()") winMenuAddItem("數據處理", "-", "") #添加菜單二級子項 winMenuAdd("數據處理/數據轉換") #添加菜單二級子項的子項 winMenuAddItem("數據處理/數據轉換", "字符串數組轉字符串", " cc()") winMenuAddItem("數據處理/數據轉換", "時間數組轉時間串", "dd(paste0(cc[[3]][1]))") #添加菜單子項 winMenuAddItem("數據處理", "數據分析", "cccc()") winMenuAddItem("數據處理", "數據分析2", "dddd()")

在添加菜單子項的腳本命令中,需要指定“自定義函數”,如前文所述。

需要執行某個功能時,選擇菜單項,然後就會立即被執行相應的功能。下圖就是通過菜單“數據處理”——“數據轉換”——"時間數組轉時間串”的選擇,執行的指令就是paste0(cc[[3]][1])。

r語言運行所有代碼的快捷鍵(R語言高級開發程序員煉成記)8

RGUI彈出菜單及其封裝

RGUI可以很快速實現彈出菜單,隻是我不太感冒;如果要使用的話,按照如下腳本代碼就可以了。

#彈出菜單 winMenuAdd("$ConsolePopup/數據處理") winMenuAddItem("$ConsolePopup/數據處理", "數據轉換1", "fff(17)") winMenuAddItem("$ConsolePopup/數據處理", "數據轉換2", "hhh(y=12)")

效果圖如下,實現及使用方法與前面一樣的。

r語言運行所有代碼的快捷鍵(R語言高級開發程序員煉成記)9

RGUI菜單擴展使用,可以封裝“代碼片段”,功能更強大

這個思路是對函數封裝的實用化改造過程中發現的,而且更加有用;

如下圖所示,菜單項“可視化分析”的子項“折線彩圖”的代碼片段如下:

#插入菜單項目裡的代碼片段 x<-rnorm(100,10,1) plot(x,col=rainbow(22)) grid() x

r語言運行所有代碼的快捷鍵(R語言高級開發程序員煉成記)10

#代碼片段在菜單實現 actionss<-'x<-rnorm(100,10,1);plot(x,col=rainbow(22));grid();x' winMenuAddItem("可視化分析",'折線彩圖',actionss)

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved