詳解R語言的24個高效操作技巧
R語言中的一些特殊技藝
1 修改默認提示語言
R默認提示的語言有的人是英文,有的人是中文,這是因為每個人系統(tǒng)默認語言不同,可以通過下面方式進行修改
Sys.getlocale()?#顯示系統(tǒng)語言 Sys.setenv(LANG="en")?#?更換默認語言為英文
2 查看R所消耗內(nèi)存大小
可以使用memory.size() #獲取內(nèi)存大小,不過該函數(shù)值只是和windows系統(tǒng)。
memory.size()?#獲取內(nèi)存大小 [1]?341
3 查看某個數(shù)據(jù)集內(nèi)存大小
>?object.size(mtcars) 7208?bytes >?object.size(mtcars)/1024?#以kb顯示 7?bytes??
4 代碼中換行
默認回車是運行代碼,在Rstudio中有自動補齊,比如定義一個函數(shù),直接自動補齊了{},回車就運行了,可以使用shift+enter #換行
function(x,y)?{ }
5 邊賦值邊顯示
默認賦值完,直接敲變量名就打印數(shù)據(jù),可以利用下面方式一步完成兩個操作。
?(x?<-?runif(10)) ?[1]?0.5795985?0.4661326?0.9730974?0.6697417?0.2431985?0.3988545?0.4064351?0.8403910 ?[9]?0.3136191?0.9979925
7 查看源代碼
如果想查看R函數(shù)的源代碼,直接輸入函數(shù)名,不加括號即可。
>?mean function?(x,?...)? UseMethod("mean") <bytecode:?0x0000023e3b8db998> <environment:?namespace:base>
8 利用函數(shù)修改鏡像
如果不設(shè)置R鏡像,每次安裝R包是都會彈出選擇框,可以在安裝之前通過函數(shù)進行設(shè)置,使用chooseCRANmirror()函數(shù),給定ind選項一個數(shù)值即可。數(shù)值代表鏡像編號。
>?chooseCRANmirror() Secure?CRAN?mirrors? ?1:?0-Cloud?[https]???????????????????????2:?Australia?(Canberra)?[https]??????? ?3:?Australia?(Melbourne?1)?[https]???????4:?Australia?(Melbourne?2)?[https]???? ?5:?Australia?(Perth)?[https]?????????????6:?Austria?[https]???????????????????? ?7:?Brazil?(BA)?[https]???????????????????8:?Brazil?(PR)?[https]???????????????? ?9:?Brazil?(RJ)?[https]??????????????????10:?Brazil?(SP?1)?[https]?????????????? 11:?Brazil?(SP?2)?[https]????????????????12:?Bulgaria?[https]??????????????????? 13:?Canada?(MB)?[https]??????????????????14:?Chile?(Santiago)?[https]??????????? 15:?China?(Beijing?2)?[https]????????????16:?China?(Hefei)?[https]?????????????? 17:?China?(Hong?Kong)?[https]????????????18:?China?(Guangzhou)?[https]? >?chooseCRANmirror(ind?=?18)
9 顯示更多數(shù)據(jù)
默認R顯示1000行數(shù)據(jù),如果想顯示更多,可以通過設(shè)置max.print選項。
>?options('max.print') $max.print [1]?1000 >?options('max.print'=2000) >?options('max.print') $max.print [1]?2000
10 默認保留小數(shù)點
默認R顯示7為小數(shù),如果想默認保留兩位小數(shù),可以通過設(shè)置digits選項。
>?options('digits') $digits [1]?7 >?options('digits'=2) >?options('digits') $digits [1]?2
11 管道
使用管道讓代碼更加簡潔,無需定義過多中間變量。R中的管道符號為“%>%”如果要使用管道,需要加載magrittr包。其實Rstudio出的各種包都默認支持管道,如果加載了tidyverse包也是可以。
>?library(magrittr) >?library(ggplot2) >?mtcars?%>%?ggplot(aes(x=cyl,y=mpg,group=cyl))+geom_boxplot()
12 拆分列數(shù)據(jù)
有些時候記不住列名,或者容易拼錯,想要列名也能夠自動補齊,可以使用attach函數(shù),這樣每一列就變成一個獨立的變量。
attach(mtcars) >?cyl ?[1]?6?6?4?6?8?6?8?4?4?6?6?8?8?8?8?8?8?4?4?4?4?8?8?8?8?4?4?4?8?6?8?4 >?mpg ?[1]?21.0?21.0?22.8?21.4?18.7?18.1?14.3?24.4?22.8?19.2?17.8?16.4?17.3?15.2?10.4?10.4 [17]?14.7?32.4?30.4?33.9?21.5?15.5?15.2?13.3?19.2?27.3?26.0?30.4?15.8?19.7?15.0?21.4
13 默認加載包
如果一些包經(jīng)常使用,想要啟動R之后自動加載,可以在配置文件中進行設(shè)置,例如每期啟動R,自動加載ggplot2包。
file.edit("~/.Rprofile") .First?<-?function()?{ library(ggplot2) }
14 為R添加額外擴展包加載路徑
默認R包的加載目錄在.libPaths()目錄中,當然可以為其添加更多的路徑。
>?.libPaths() [1]?"C:/Users/genom/Documents/R/win-library/4.0" [2]?"C:/Program?Files/R/R-4.0.3/library"???????? >?.libPaths(new?=?"C:/Users/genom/Desktop/nparFiles/") >?.libPaths() [1]?"C:/Users/genom/Desktop/nparFiles"???"C:/Program?Files/R/R-4.0.3/library"
15 遷移R包
如果需要將一臺設(shè)備安裝的R包,在另外一臺設(shè)備上安裝,首先保存A設(shè)備上的R包名字列表,在另外一臺設(shè)備上寫一個循環(huán)進行安裝。
#在A設(shè)備上保存名字列表 oldip?<-?installed.packages()[,1] save(oldip,file?=?"installedPacckages.Rdata") #在B設(shè)備上進行安裝; load("installedPacckages.Rdata") newip?<-?installed.packages()[,1] ?for?(i?in?setdiff(oldip,newip))?{ ??install.packages(i) }
16 列出R包中的函數(shù)
如果想查看一個R包中全部函數(shù),可以使用下面的語句。
ls(package:base)
17 不加載包使用其中函數(shù)
如果加載R包,還想使用其中的函數(shù),需要使用“包名字::函數(shù)名”的方式。
dplyr::filter()
18 快速獲取顏色
在繪圖的時候,想要快速設(shè)置幾個不同的顏色,又嫌生成顏色比較麻煩??梢允褂胷ainbow()函數(shù),給定一個數(shù)據(jù),快速生成顏色。
>?rainbow(6) [1]?"#FF0000"?"#FFFF00"?"#00FF00"?"#00FFFF"?"#0000FF"?"#FF00FF"
19 炸開數(shù)據(jù)
前面介紹了attach函數(shù)可以將每一列變成一個單獨變量,但這種方式并不推薦,因為會讓變量環(huán)境很混亂??梢允褂靡粋€特殊管道符"%$%"實現(xiàn)同樣的效果,我稱之為把數(shù)據(jù)“炸開”
>?library(magrittr) Warning?message: 程輯包‘magrittr'是用R版本3.6.3?來建造的? >?women?%$%?plot(weight,height)
20 巧用example函數(shù)學習繪圖
example函數(shù)會幫助運行R幫助文檔中的代碼,有時候想看一個函數(shù)如何使用,可以直接運行這個example函數(shù)。
>?library(pheatmap) >?example("pheatmap") phetmp>?#?Create?test?matrix phetmp>?test?=?matrix(rnorm(200),?20,?10) phetmp>?test[1:10,?seq(1,?10,?2)]?=?test[1:10,?seq(1,?10,?2)]?+?3 phetmp>?test[11:20,?seq(2,?10,?2)]?=?test[11:20,?seq(2,?10,?2)]?+?2 phetmp>?test[15:20,?seq(2,?10,?2)]?=?test[15:20,?seq(2,?10,?2)]?+?4 phetmp>?colnames(test)?=?paste("Test",?1:10,?sep?=?"") phetmp>?rownames(test)?=?paste("Gene",?1:20,?sep?=?"") phetmp>?#?Draw?heatmaps phetmp>?pheatmap(test)
21 統(tǒng)計計算時間
想統(tǒng)計一條代碼運行時間,可以使用system.time()函數(shù)
>?system.time(runif(100000000)) 用戶?系統(tǒng)?流逝? 2.75?0.08?2.83?
21 釋放內(nèi)存
R有一套自己的內(nèi)存回收機制,因此,即使刪除了變量,內(nèi)存不會立即變化,可以使用gc()函數(shù)釋放內(nèi)存。
>?memory.size() [1]?297.56 >?rm(list?=?ls()) >?memory.size() [1]?298.54 >?gc() ??????????used?(Mb)?gc?trigger??(Mb)?max?used??(Mb) Ncells?1384255?74.0????4046672?216.2??4046672?216.2 Vcells?4288164?32.8???27057220?206.5?33821525?258.1 >?memory.size() [1]?255.5
22 刪除全部變量
#顯示全部變量內(nèi)容 >?ls() #刪除 >?rm(list=ls()) #釋放內(nèi)存 >?gc()
23 恢復默認數(shù)據(jù)集
如果不小心將內(nèi)置數(shù)據(jù)集刪除了,或者新定義同名變量,就會替換原有數(shù)據(jù)集。
?head(mtcars) ???????????????????mpg?cyl?disp??hp?drat????wt??qsec?vs?am?gear?carb Mazda?RX4?????????21.0???6??160?110?3.90?2.620?16.46??0??1????4????4 Mazda?RX4?Wag?????21.0???6??160?110?3.90?2.875?17.02??0??1????4????4 Datsun?710????????22.8???4??108??93?3.85?2.320?18.61??1??1????4????1 Hornet?4?Drive????21.4???6??258?110?3.08?3.215?19.44??1??0????3????1 Hornet?Sportabout?18.7???8??360?175?3.15?3.440?17.02??0??0????3????2 Valiant???????????18.1???6??225?105?2.76?3.460?20.22??1??0????3????1 >?mtcars=1:10 >?mtcars ?[1]??1??2??3??4??5??6??7??8??9?10 >?data("mtcars") >?head(mtcars) ???????????????????mpg?cyl?disp??hp?drat????wt??qsec?vs?am?gear?carb Mazda?RX4?????????21.0???6??160?110?3.90?2.620?16.46??0??1????4????4 Mazda?RX4?Wag?????21.0???6??160?110?3.90?2.875?17.02??0??1????4????4 Datsun?710????????22.8???4??108??93?3.85?2.320?18.61??1??1????4????1 Hornet?4?Drive????21.4???6??258?110?3.08?3.215?19.44??1??0????3????1 Hornet?Sportabout?18.7???8??360?175?3.15?3.440?17.02??0??0????3????2 Valiant???????????18.1???6??225?105?2.76?3.460?20.22??1??0????3????1 >?
24 快速獲取函數(shù)選項參數(shù)
R函數(shù)的選項參數(shù)非常多,如果每次都調(diào)出幫助文檔很麻煩,可以使用args()函數(shù),快速打印出函數(shù)的選項參數(shù)。
>?args(heatmap) function?(x,?Rowv?=?NULL,?Colv?=?if?(symm)?"Rowv"?else?NULL,? ????distfun?=?dist,?hclustfun?=?hclust,?reorderfun?=?function(d,? ????????w)?reorder(d,?w),?add.expr,?symm?=?FALSE,?revC?=?identical(Colv,? ????????"Rowv"),?scale?=?c("row",?"column",? ????????"none"),?na.rm?=?TRUE,?margins?=?c(5,?5),?ColSideColors,? ????RowSideColors,?cexRow?=?0.2?+?1/log10(nr),?cexCol?=?0.2?+? ????????1/log10(nc),?labRow?=?NULL,?labCol?=?NULL,?main?=?NULL,? ????xlab?=?NULL,?ylab?=?NULL,?keep.dendro?=?FALSE,?verbose?=?getOption("verbose"),? ????...)? NULL
以上就是詳解R語言的24個高效操作技巧的詳細內(nèi)容,更多關(guān)于R語言24個高效操作的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
R語言中cbind、rbind和merge函數(shù)的使用與區(qū)別
這篇文章主要介紹了R語言中cbind、rbind和merge函數(shù)的使用與區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03