R語言學習筆記之四


僅用於記錄R語言學習過程:

內容提要:

自定義函數:function()函數,缺省參數(...)

數據的讀取:文本,excel,SPSS,SAS,STATA格式;

   主要的函數有:read.csv()、read.table()、readxl包中的read_excel()函數、XLConnect包中的readWorksheetFromfile()、foreign包中的read.xx()、stringi包中的stri_read_lines()

數據的寫出和導出:文本,excel,SPSS,SAS,STATA格式;

  主要的函數有:scan()、cat()、write.csv()、writeLines()

正文: 

  自定義函數和數據的讀取

n  函數的用法可通過右下角的help-輸入函數名進行查找學習使用

n  自定義函數:自己編寫一個需要用的函數

u  示例:

> my_fun1 <- function(x,y) {
    x+y
 }
> my_fun1(3,4)
[1] 7
 
my_fun2 <- function(x,y=2) {
+   x+y
+ }
>   
> my_fun2(2,4)
[1] 6
 
注:即使y已經給了一個固定值,也是可以更改的,也可以只傳入一個值,如my_fun2(1)
 
關於缺省參數,用‘...’表示,代表着有多個參數但是並沒有完全寫出來,在調用時可根據需要賦值,舉例:
value <- c(sqrt(1:100))
my_fun3 <- function(x,...) {
  print(x)
  summary(...)
}
 此處省略了summary()函數的參數,可以根據后面的賦值進行返回

       > my_fun3('Here is summary for values:',value,digit =2)

[1] "Here is summary for values:"

   Min. 1st Qu.  Median    Mean 3rd Qu.

  1.000   5.074   7.106   6.715   8.675

   Max.

 10.000

                     addmup <- function(x,...) {

  args <-list(...)

  for (a in args) x <- x+a

  x

 

addmup(1,2,3,4,5)

 

normalize <- function(x,m = mean(x,...),s = sd(x,...),...) {

  (x-m) / s

}

normalize(x = 1:100) 

 

學習重點:function()函數的用法(自定義函數),缺省參數(…)的用法,構造形式:

構造函數 {

執行的程序}

給函數賦值

n  數據的讀取

u  File    import Dataset 

l  .csv(逗號分隔符文件),skip跳過前面的幾行

read.csv()   R的內置函數,用於數據讀取,參數設置:

read.csv(file = ‘完整路徑,要加上文件的后綴名’,header = TRUE是指把第一行當做變量名,sep = ‘,’ 是指分隔符,row.names = 可傳入字符串向量,用來定義每一行的名稱;col.names 用於定義列名,na.strings = c(‘ ’,000,999)用於定義缺失值,stringAsFactors =TRUE 把字符串轉換成因子)

示例:my_file2 <- read.csv(file = '絕對路徑.csv',header = TRUE)

如何把excel文件轉換成csv文件:文件—另存為

如何讀取文本文件(txt或xls格式的) read.table ,參數設置與read.csv是一致的。

示例:my_file3<- read.table(file = '絕對路徑.txt',header = TRUE)

如何快速讀取excel文件,用readxl 包,path相當於file,默認第一行為列名

my_file4 <- read_excel(path = '絕對路徑','')

但如果excel中數據過多會報錯,解決辦法:

當用EXCEL作為數據存儲目標,從數據庫導出數據時由於EXCEl的設置最多只能導入65533條數據。導入之后用編輯軟件查看和編輯改文件沒有問題,但是使用分析軟件讀取時卻可能發生錯誤。

例如,使用R讀取時,會報如下錯誤:

 

Error in read_fun(path = path, sheet = sheet, limits = limits, shim = shim, :

std::bad_alloc

顯示內存分配錯誤,為了解決這個問題最簡單的辦法是另存為CSV格式,或者一開始就將數據導入到CSV文件中

XLConnect中有一個readWorksheetFromFile()函數,方便數據的局部讀取。參數設置如下:

my_file5 <- readWorksheetFromFile(file = 'D:\\analysis\\test.xlsx',sheet = 1,startRow = 5,endRow =10,startCol = 2,endCol = 4)

如何讀取SPSS SAS STATA 三種格式的數據  

l  Flie  import Dataset

l  用foreign擴展包中read.spss()函數讀取SPSS格式的函數

my_spss <- read.spss(file = '絕對路徑.sav',to.data.frame = TRUE()指的是轉換成數據框,TRUE代表是)

l  用foreign擴展包中的read.ssd()函數讀取SAS格式的函數

l  用foreign擴展包中的read.dta()函數讀取STATA格式的函數

l  文本的讀取:使用readLines()內置函數

my_text<-readLines(con = '絕對路徑.txt')

讀取基因序列的文本:my_seq <- readLines(con = '絕對路徑.fasta')

l  用stringi擴展包中的stri_read_lines()函數,也可以導入基因序列

my_seq2 <- stri_read_lines('絕對路徑.fasta')

l  的

n  數據的寫出和導出

u  scan()函數:x<- scan()  在控制台輸入數字,按兩次回車結束輸入,輸入x,得到返回值

u  cat()函數:可以實現寫出控制台上,也可以寫在文件中:

cat(1:10)

cat(1:10,file = ‘絕對路徑.txt’)

u  導出csv文件:用write.csv()函數

write.csv(my_file2(文件名),file = '絕對路徑/newfile.csv')   #newfile是此處新建的

u  導出excel文件,直接在導出時選擇csv格式

write.csv(my_file3(文件名),file = '絕對路徑/newfile.csv')   #file3為excel文本

u  導出文本文件:writeLines()函數

u  用foreign擴展包中相應的寫出的函數(如STATA),具體可從help中查找

 

注:在遇到新函數時可從help中學習用法,在使用函數參數是,可按Tab查看可選參數及使用方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM