您好,登錄后才能下訂單哦!
這篇文章主要介紹了R語言高效的操作技巧有哪些的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇R語言高效的操作技巧有哪些文章都會(huì)有所收獲,下面我們一起來看看吧。
R默認(rèn)提示的語言有的人是英文,有的人是中文,這是因?yàn)槊總€(gè)人系統(tǒng)默認(rèn)語言不同,可以通過下面方式進(jìn)行修改
Sys.getlocale() #顯示系統(tǒng)語言 Sys.setenv(LANG="en") # 更換默認(rèn)語言為英文
可以使用memory.size() #獲取內(nèi)存大小,不過該函數(shù)值只是和windows系統(tǒng)。
memory.size() #獲取內(nèi)存大小 [1] 341
> object.size(mtcars) 7208 bytes > object.size(mtcars)/1024 #以kb顯示 7 bytes
默認(rèn)回車是運(yùn)行代碼,在Rstudio中有自動(dòng)補(bǔ)齊,比如定義一個(gè)函數(shù),直接自動(dòng)補(bǔ)齊了{(lán)},回車就運(yùn)行了,可以使用shift+enter #換行
function(x,y) { }
默認(rèn)賦值完,直接敲變量名就打印數(shù)據(jù),可以利用下面方式一步完成兩個(gè)操作。
(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
如果想查看R函數(shù)的源代碼,直接輸入函數(shù)名,不加括號(hào)即可。
> mean function (x, ...) UseMethod("mean") <bytecode: 0x0000023e3b8db998> <environment: namespace:base>
如果不設(shè)置R鏡像,每次安裝R包是都會(huì)彈出選擇框,可以在安裝之前通過函數(shù)進(jìn)行設(shè)置,使用chooseCRANmirror()函數(shù),給定ind選項(xiàng)一個(gè)數(shù)值即可。數(shù)值代表鏡像編號(hào)。
> 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)
默認(rèn)R顯示1000行數(shù)據(jù),如果想顯示更多,可以通過設(shè)置max.print選項(xiàng)。
> options('max.print') $max.print [1] 1000 > options('max.print'=2000) > options('max.print') $max.print [1] 2000
默認(rèn)R顯示7為小數(shù),如果想默認(rèn)保留兩位小數(shù),可以通過設(shè)置digits選項(xiàng)。
> options('digits') $digits [1] 7 > options('digits'=2) > options('digits') $digits [1] 2
使用管道讓代碼更加簡(jiǎn)潔,無需定義過多中間變量。R中的管道符號(hào)為“%>%”如果要使用管道,需要加載magrittr包。其實(shí)Rstudio出的各種包都默認(rèn)支持管道,如果加載了tidyverse包也是可以。
> library(magrittr) > library(ggplot2) > mtcars %>% ggplot(aes(x=cyl,y=mpg,group=cyl))+geom_boxplot()
有些時(shí)候記不住列名,或者容易拼錯(cuò),想要列名也能夠自動(dòng)補(bǔ)齊,可以使用attach函數(shù),這樣每一列就變成一個(gè)獨(dú)立的變量。
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
如果一些包經(jīng)常使用,想要啟動(dòng)R之后自動(dòng)加載,可以在配置文件中進(jìn)行設(shè)置,例如每期啟動(dòng)R,自動(dòng)加載ggplot2包。
file.edit("~/.Rprofile") .First <- function() { library(ggplot2) }
默認(rèn)R包的加載目錄在.libPaths()目錄中,當(dāng)然可以為其添加更多的路徑。
> .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"
如果需要將一臺(tái)設(shè)備安裝的R包,在另外一臺(tái)設(shè)備上安裝,首先保存A設(shè)備上的R包名字列表,在另外一臺(tái)設(shè)備上寫一個(gè)循環(huán)進(jìn)行安裝。
#在A設(shè)備上保存名字列表 oldip <- installed.packages()[,1] save(oldip,file = "installedPacckages.Rdata") #在B設(shè)備上進(jìn)行安裝; load("installedPacckages.Rdata") newip <- installed.packages()[,1] for (i in setdiff(oldip,newip)) { install.packages(i) }
如果想查看一個(gè)R包中全部函數(shù),可以使用下面的語句。
ls(package:base)
如果加載R包,還想使用其中的函數(shù),需要使用“包名字::函數(shù)名”的方式。
dplyr::filter()
在繪圖的時(shí)候,想要快速設(shè)置幾個(gè)不同的顏色,又嫌生成顏色比較麻煩??梢允褂胷ainbow()函數(shù),給定一個(gè)數(shù)據(jù),快速生成顏色。
> rainbow(6) [1] "#FF0000" "#FFFF00" "#00FF00" "#00FFFF" "#0000FF" "#FF00FF"
前面介紹了attach函數(shù)可以將每一列變成一個(gè)單獨(dú)變量,但這種方式并不推薦,因?yàn)闀?huì)讓變量環(huán)境很混亂。可以使用一個(gè)特殊管道符"%$%"實(shí)現(xiàn)同樣的效果,我稱之為把數(shù)據(jù)“炸開”
> library(magrittr) Warning message: 程輯包‘magrittr'是用R版本3.6.3 來建造的 > women %$% plot(weight,height)
example函數(shù)會(huì)幫助運(yùn)行R幫助文檔中的代碼,有時(shí)候想看一個(gè)函數(shù)如何使用,可以直接運(yùn)行這個(gè)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)
想統(tǒng)計(jì)一條代碼運(yùn)行時(shí)間,可以使用system.time()函數(shù)
> system.time(runif(100000000)) 用戶 系統(tǒng) 流逝 2.75 0.08 2.83
R有一套自己的內(nèi)存回收機(jī)制,因此,即使刪除了變量,內(nèi)存不會(huì)立即變化,可以使用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
#顯示全部變量?jī)?nèi)容 > ls() #刪除 > rm(list=ls()) #釋放內(nèi)存 > gc()
如果不小心將內(nèi)置數(shù)據(jù)集刪除了,或者新定義同名變量,就會(huì)替換原有數(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 >
R函數(shù)的選項(xiàng)參數(shù)非常多,如果每次都調(diào)出幫助文檔很麻煩,可以使用args()函數(shù),快速打印出函數(shù)的選項(xiàng)參數(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
關(guān)于“R語言高效的操作技巧有哪些”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“R語言高效的操作技巧有哪些”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。