顯示具有 R語言 標籤的文章。 顯示所有文章
顯示具有 R語言 標籤的文章。 顯示所有文章

2022年4月11日 星期一

2022年1月20日 星期四

R套件安裝後存在系統上的位置

安裝在Linux上面的R,可用下面的指令來看library路徑:

  • .libPaths()

在Debian裏面預設會顯示(前面的數字代表使用套件的順序、藍色代表在R環境下安裝、綠色代表在系統環境下安裝):

  • [1] "/home/使用者名稱/R/x86_64-pc-linux-gnu-library/3.1" 
  • [2] "/usr/local/lib/R/site-library"
  • [3] "/usr/lib/R/site-library"
  • [4] "/usr/lib/R/library"

2019年10月4日 星期五

Mac上讓R抓剪貼簿上的資料

在Mac上,想要把Excel的資料傳到R裡面去分析,除了很麻煩的用一些套件以外,其實還有個更快的方式可解。步驟如下:
  1. 首先打開excel檔案,把想要分析的區域匡起來
  2. 使用Cmd-c複製,這時候資料會複製到剪貼簿(clipboard)
  3. 打開R的環境,使用下面的程式碼

2019年9月17日 星期二

invalid factor level, NA generated

在將資料塞入R語言的資料框架(Data frame)時出現下面的錯誤訊息

  Warning message: 
  In `<-.factor`( ...... ) 
    invalid factor level, NA generated

這是因為資料框架裡面的字串預設會使用因子(factor)來儲存。若是某個儲存欄位是字串,但輸入的資料不在此欄位的因子列表也不是NA,那麼就會出現上述的問題。解決方式是在宣告資料框架的時候加入 stringsAsFactors =  FALSE

2019年9月16日 星期一

陣列在R語言上的宣告、合併與選取

以下的範例是在R語言內陣列(Matrix)的基礎使用方式

一:陣列的宣告。宣告3列(row) ✕ 2欄(column)的陣列
> a <- matrix(c(5,6,5,6,5,6), nrow=3, ncol=2)
> b <- matrix(c(7,8,7,8,7,8), nrow=3, ncol=2)
> c <- matrix(c(9,0,9,0,9,0), nrow=3, ncol=2)
> print(a)
     [,1] [,2]
[1,]    5    6
[2,]    6    5
[3,]    5    6

2019年8月2日 星期五

Windows上面安裝rJava

使用R語言處理Excel檔,背後會使用Java來轉換資料,其中一項就是rJava。這邊介紹如何在Windows 10上面安裝rJava:
  1. 使用 sessionInfo() 這個指令確認系統安裝R的版本是32-bit or 64-bit
  2. 下載對應32/64 bit的Java JDK;要注意安裝的R與Java的32/64 bit版本必須要一致。這個連結提供了64 bit offline Java的安裝檔

2019年6月3日 星期一

卸載使用中的R套件

開啟一個R以後,想要移除所有的變數可以下指令:
  • rm(list = ls())
若是要卸載所有的套件,可以用下面的指令:
  • lapply(paste('package:', names(sessionInfo()$otherPkgs), sep=""), detach, character.only=TRUE, unload=TRUE)

2019年1月29日 星期二

R的啟動順序與環境變數

R在啟動的時候,會依序去讀下面的幾個設定檔:
  1. R_HOME/etc/Renviron:其中的R_HOME定義在啟動的腳本裡面。例如說/usr/bin/R 這是一個腳本,裡面就會定義R_HOME所在位置
  2. R_HOME/etc/Renviron.site:若沒設定R_ENVIRON才會執行
    阻止用參數 --no-environ
  3. ~/.Renviron:若沒設定R_ENVIRON_USER,會執行
    阻止用參數 --no-environ
  4. R_HOME/etc/Rprofile.site:若沒設定R_PROFILE才會執行
    阻止用參數 --no-site-files
  5. ~/.Rprofile:若沒設定R_PROFILE_USER才會執行
    阻止用參數 --no-init-file
  6. .RData:若目前工作目錄有此檔案,才會直接載入
    阻止用參數 --no-restore-data

若是想要乾淨的都不要讀,那就直接執行
  • R --vanilla
所謂的 --vanilla就是--no-save --no-restore --no-site-file --no-init-file --no-environ

2018年12月25日 星期二

R語言使用lapply或sapply做T-tests

一個資料表中,根據某個欄做完分群後,想要對這些分群的某個數值做T檢定、甚至是兩兩做T檢定。這個時候可使用lapply(或sapply,會將lapply輸出表格化、易於判讀)來快速達成。以下舉例lapply與sapply要怎麼使用


## 1. 將InsectSpray資料表根據spray欄位使用split做分割

> d <- InsectSprays
> s <- split(d, d$spray)

## 2. 對於每個不同的spray裡面會一串count值,看這些數值的最大值與最小值等特性:

> tapply(df$count, df$spray, summary)
> lapply(s, function(x) summary(x$count))
> sapply(s, function(x) summary(x$count))
            A        B        C         D    E        F
Min.     7.00  7.00000 0.000000  2.000000 1.00  9.00000
1st Qu. 11.50 12.50000 1.000000  3.750000 2.75 12.50000
Median  14.00 16.50000 1.500000  5.000000 3.00 15.00000
Mean    14.50 15.33333 2.083333  4.916667 3.50 16.66667
3rd Qu. 17.75 17.50000 3.000000  5.000000 5.00 22.50000
Max.    23.00 21.00000 7.000000 12.000000 6.00 26.00000
這邊可以注意tapply與lapply出來的結果會是相同的,但用sapply比較易讀~
lapply與sapply的運作方式:先從s讀取出每個元素,將此元素存到後面的變數x裡面,後面的function在對於變數x做各種操作

2018年12月24日 星期一

R語言使用split分割資料表

對於一個資料表d(這邊是InsectSpray的資料),首先用下面指令看結構: 
  • d <- InsectSpray
  • class(d)
  • str(d)
知道某欄位(這邊以spray)有A, B, C, ...幾種,可以根據此欄位的值篩選出所有的列:
  • dA <- subset(d, d$spray=="A")
  • dABC <- subset(d, d$spray %in% c("A", "B", "C"))

但是,像上面spray欄位有A, B, C, D, E, F六個值,若每次都要手動另外生成新的變數來存取篩選出來的資料表會很麻煩,R語言裡面有split指令可以自動幫忙分群,在上述的利字就是將df資料根據spray這個欄位分群:
  • s <- split(d, d$spray)

2018年8月16日 星期四

DRBL的client上執行R出現錯誤

在DRBL的client上面執行R,出現了下面的錯誤訊息:
Error : .onLoad failed in loadNamespace() for 'utils', details:
  call: options(op.utils[toset])
  error: invalid value for 'editor'
In addition: Warning message:
package "methods" in options("defaultPackages") was not found 
Error : .onLoad failed in loadNamespace() for 'utils', details:
  call: options(op.utils[toset])
  error: invalid value for 'editor'
In addition: Warning message:
package 'utils' in options("defaultPackages") was not found 
Error : .onLoad failed in loadNamespace() for 'utils', details:
  call: options(op.utils[toset])
  error: invalid value for 'editor'
In addition: Warning message:
package 'stats' in options("defaultPackages") was not found 
During startup - Warning messages:
1: package 'methods' in options("defaultPackages") was not found 
2: Setting LC_CTYPE failed, using "C" 

2018年4月27日 星期五

R讀取excel檔案

在R裡面要讀取Excel的資料表,可以直接用gdata套件,指令如下:
  1. install.packages("gdata")
  2. require("gdata") 
  3. df <- read.xls("excel.xls", sheet=1, header=T) 
  4. sapply(df, summary)
前面1,2行指令是安裝與使用gdata套件
第3行讀取這個檔案的第1個table,第4行看內容摘要

在下面的參考資料裡面,其實還有更多的套件可以使用,像是:RODBC, xlsReadWrite, XLConnect, xlsx等等,在這邊選用gdata是因為它支援Mac, Linux, Windows,但因為需要用到Perl,所以Windows必須要另外安裝Perl


參考資料

_EOF_

2018年4月26日 星期四

R Documentation與Quick-R

RDocumentation是個專門介紹R指令與套件的網站,關鍵字導向:
  • 直接輸入關鍵字,然後搜尋
  • 用Task View搜尋相關的套件

Quick-R則是範例導向,找到相關的主題看怎麼使用:
  • Basic Statistics:像是regression, ANOVA/ANCOVA/MANCOVA, power analysis等
  • Advanced Statistics:像是predictive models, latent variable models, partitioning methods或machine learning
  • Graphs:簡單的繪圖,像是dot plots, bar plots, line charts, pie charts, boxplots, scatterplots
  • Advanced Graphs:進階的繪圖,像是ggplot2, probability plots, mosaic plots, correlograms到interacting with graphs
_EOF_

2018年4月24日 星期二

R做One-Way ANOVA

One-Way Analysis of Variance,簡稱One-Way ANOVA。使用在當解釋變數為類別型(categorical)的時候,判斷不同類別的平均數(mean)是不是一樣。對於每一個類別這個模式約可寫成:
  • y = u + e
而One-Way ANOVA就是在檢定下面的虛無假設是否成立:
  • u1 = u2 = ... = uk

下面用InsectSprays這個資料集來做One-Way ANOVA,也就是看使用不同殺蟲劑(類別型解釋變數),對於蟲子殘留數量的平均數是不是有影響:

2018年4月20日 星期五

R預設的資料集ChickWeight

R語言內建的資料集ChickWeight記錄了雞隻在不同的飼料飼養環境下體重的不同。總共有578筆資料,每筆資料分成四個欄位:
  • weight:體重,單位是公克
  • Time:出生後幾天測量體重
  • Chick:每一隻雞的編號,總共有50隻編號從1到50
  • Diet:四種不同的蛋白質飼料環境,1, 2, 3, 4
藍色是影響體重的解釋變數,綠色的體重是應變數

2018年4月19日 星期四

R語言使用tapply做分組統計

在R裡面,對一個資料表的數據要做分組統計,可以接用tapply(R語言的apply家族其中之一)。以下用InsectSprays資料集作為例子。這個InsectSprays資料集只有兩個欄位:
  • spray:使用的殺蟲劑
  • count:使用完殺蟲劑後蟲子的數目
在此只要用tapply,就可以自動根據殺蟲劑分組,做蟲子數目的統計:
  • 計算平均數:tapply(InsectSprays$count, InsectSprays$spray, mean)
  • 計算中位數:tapply(InsectSprays$count, InsectSprays$spray, median)
  • 蟲子數目的統計量:
    tapply(InsectSprays$count, InsectSprays$spray, summary)
第三個欄位是作用在第一個欄位的函數,第二個欄位則是分組個依據

2018年4月18日 星期三

R預設的資料集InsectSprays

這個InsectSprays資料集,含有72筆資料,每筆有下面兩個欄位:
  • count:蟲子出現的個數
  • spray:使用的殺蟲劑,分成A, B, C, D, E, F
資料來源是 Beall, G., (1942) The Transformation of data from entomological field experiments, Biometrika, 29, 243–262.

2018年4月17日 星期二

R的預設資料集DNase

R裡面預設的資料集Elisa assay of DNase,簡稱DNase。這個資料集記錄了大鼠血清裡面的重組蛋白質DNase(recombinant protein DNase),總共有176筆資料、分成三個欄位:
  • Run:重複了幾次的測試。這邊總共跑了11個run,每個run裡面都有16筆資料,所以資料總數是16*11=176
  • conc:DNase的濃度,是實驗的自變數。每個run裡面同一個濃度都有二次重複,固定了八種濃度,所以每個run的資料數目是2*8=16筆
  • density:用ELISA測出來的光學強度,是實驗的應變數。

2018年4月16日 星期一

畫譜系圖Pedigree Plot的軟體

不知道譜系圖的,先看一下這部關於薔薇戰爭的說明影片
 
裡面的人物關係可以用譜系圖畫出來:
圖片來自dreadpiratemama
以上圖片來自Henry VI, Part II in dreadpiratemama