R語言零碎知識集合

九茶發表於2015-09-22

(更多內容請見:R、ggplot2、shiny 彙總


1、資料框按照某一列排序
例如存放學生資訊的資料框 rt(name,sex,age,score),按照分數 score 遞減排序:

> rt[order(rt[,4],decreasing=T),]   ## 特別注意後面的逗號別忘了!



2、小數取整

> x <- 3.555555
> ceiling(x)
[1] 4
> floor(x)
[1] 3
> trunc(x)
[1] 3
> round(x, digits = 0)
[1] 4
> signif(x, digits = 6)
[1] 3.55556



3、檢視某個元素是否在向量裡面,用 %in%

> 34 %in% c(1,2,3,4,34,44)
[1] TRUE



4、求某個日期的前一天

> as.Date("2015-07-27") - 1
[1] "2015-07-26"



5、輸出字串時要換行,print 中 \n 是無效的,要用 cat

> print("ABC\nDEF")
[1] "ABC\nDEF"
> cat("ABC\nDEF")
ABC
DEF



6、求資料框的行數:nrow(dt),求資料框的列數:ncol(dt);
求資料框的行標籤:rownames(dt),求資料框的列標籤:colnames(dt)。



7、把資料框按照某一列的不同值切分成幾個資料框,用 split()

> dt <- data.frame(AA=c(1,2,3), BB=c('a','b','a'))
> dt
  AA BB
1  1  a
2  2  b
3  3  a
> group = split(dt, dt$B)
> group
$a
  AA BB
1  1  a
3  3  a

$b
  AA BB
2  2  b



8、計算程式執行的時間

> ptm <- proc.time()
> a = 1 + 1   ## 此處放你的程式
> print(proc.time() - ptm)
使用者 系統 流逝 
0.00 0.00 1.47 



9、R程式暫停 n 秒

Sys.sleep(n)   ## 注意此處 n 的單位是秒,不是毫秒



10、直接呼叫某個包裡面的函式:shiny::renderDataTable



11、R語言裡面的全域性變數

abc <<- 56   ## 使用'<<-'便可轉成全域性變數。
            ## 但在使用的過程中,'<<-'才能改變全域性的值,'<-'只能改變區域性的值



12、柱狀圖可能某個柱條為空,去掉空的柱條:加上 factor

> ggplot(data,aes(x = factor(myX), y = myY))



13、檢視 ggplot 物件的作圖引數

> p = ggplot(···) + ···
> ggplot_build(p)   ## 可檢視作圖的所有引數,如所有點的座標、顏色等



14、把 ggplot 物件以圖片形式儲存到本地

> p = ggplot(···) + ···
> ggsave("picture1.png", path = "C:/workspace", width = 10, height = 6, dpi = 300)



15、如何將 ggplot2 中的圖片標題放在下方(預設在圖片正上方)

theme(title = element_text(vjust = -50))   ## 好像沒有調相對座標的引數,只能用絕對座標來調了



16、(ggplot2 中)去掉背景色theme(panel.background = element_blank())



17、(ggplot2 中)設定背景色

theme(panel.background = element_rect(fill = "blue") +   ##改變座標系裡面的背景顏色
theme(plot.background = element_rect(fill = "blue", color = "blue")  ##改變座標系之外的背景色



18、雷達圖

library(fmsb)

######## 給資料框加上兩行,分別作為蜘蛛圖的最大值和最小值
dataframeAdding = function(dataframe){
    myMax = c()
    myMin = rep(1,ncol(dataframe))
    for (i in (1:ncol(dataframe)))
        myMax[i] = max(dataframe[,i])
    result = rbind(myMax, myMin, dataframe)
    return(result)
}

#####主程式開頭
dt = data.frame(A = c(321,77,142,270), B = c(290,200,400,100), C = c(24,150,42,75), D = c(122,72,322,12), E = c(450,220,410,300))
result = dataframeAdding(dt)   # 畫蜘蛛圖的要求,資料框的第一行作為圖的最大值,第二行作為圖的最小值

op <- par(mar = c(1,2,2,1),mfrow = c(2,2))     #用於顯示多個圖形
radarchart(result,axistype = 0,plwd = 1:5,pcol = 1,title = "(axistype=0, plwd=1:5, pcol=1)")
radarchart(result,axistype = 1,seg = 5,plty = 1,title = "(axistype=1, seg=5, plty=1)")
radarchart(result,axistype = 2,pcol = topo.colors(6),plty = 1,title = "(axistype=2, pcol=topo.colors(6), plty=1)")
radarchart(result,axistype = 3,pty = 32,plty = 1,axislabcol = "grey",na.itp = FALSE,title = "(axistype=3, pty=32, plty=1, axislabcol=\"grey\", na.itp = FALSE)")
par(op)

這裡寫圖片描述


轉載請註明出處,謝謝!(原文連結:http://blog.csdn.net/Bone_ACE/article/details/48326121

相關文章