R語言cat()函數

輸出在S交互運行時要顯示某一個對象的值只要鍵入其名字便可,如: > x <- 1:10> x[1]          9 10
這其實是調用了print()函數,即print(x)。在非交互運行(程序)中應使用print()來輸出。print()函數能夠帶一個digits=參數指定每一個數輸出的有效數字位數,能夠帶一個quote= 參數指定字符串輸出時是否帶兩邊的撇號,能夠帶一個print.gap=參數指定矩陣或數組輸出時列之間的間距。
print()函數是一個通用函數,即它對不一樣的自變量有不一樣的反應。對各類特殊對象如數組、模型結果等均可以規定print的輸出格式。
cat()函數也用來輸出,但它能夠把多個參數鏈接起來再輸出(具備paste()的功能)。例如:
> cat(」i = 「, i, 「n」)
注意使用cat()時要本身加上換行符」n」。它把各項轉換成字符串,中間隔以空格鏈接起來,而後顯示。若是要使用自定義的分隔符,能夠用sep=參數,例如: > cat(c("AB", "C"), c("E", "F"), "n", sep="")ABCDEFcat()還能夠指定一個參數file=給一個文件名,能夠把結果寫到指定的文件中,如: > cat("i = ", 1, "n", file="c:/work/result.txt")若是指定的文件已經存在則原來內容被覆蓋。加上一個append=TRUE參數能夠不覆蓋原文件而是在文件末尾附加,這很適用於運行中的結果記錄。
cat()函數和print()都不具備很強的自定義格式功能,爲此可使用cat()與format() 函數配合實現。format()函數爲一個數值向量找到一種共同的顯示格式而後把向量轉換爲字符型。例如: > format(c(1, 100, 10000))[1] " 
   1" "  100" "10000"S-PLUS中的format()函數功能較強,具備較多的控制參數,請參見幫助。R中目前format() 函數功能仍較弱,但R有一個formatC函數能夠提供相似C語言的printf格式功能。formatC對輸入向量的每個元素單獨進行格式轉換而不生成統一格式,例如:  > formatC(c(1, 10000))[1] "1"      "1e+004"在formatC()函數中能夠用format=參數指定C格式類型,如」d」(整數),」f」‘(定點實數),」e」(科學記數法),」E」, 「g」(選擇位數較少的輸出格式),」G」, 「fg」(定點實數但用digits 指定有效位數),」s」(字符串)。能夠用width指定輸出寬度,用digits指定有效位數(格式爲e,E,g,G,fg時)或小數點後位數(格式爲f)時。能夠用flag參數指定一個輸出選項字符串,字符串中有」-」表示輸出左對齊,有」0″表示左空白用0填充,有」+」表示要輸出正負號,等等。例如,咱們有一個矩陣da中保存了三個日期的年、月、日: > da     [,1] [,2] [,3][1,]   99    1    3[2,]   96   11    9[3,]   65   5   18爲了輸出這三個日期,能夠用apply函數指定對每一行做用一個輸出函數,此輸出函數利用cat()和formatC來控制: > apply(da, 1, function(r)+  cat(formatC(r[1], format='d', width=2, flag='0'), '-',+  formatC(r[2], format='d', width=2, flag='0'), '-',+  formatC(r[3], format='d', width=2, flag='0'), 'n', sep=''))99-01-0396-11-0965-05-18NULL這裏咱們知道apply函數第一個參數指定了一個矩陣,第二個參數說明對行操做仍是對列操做,第三個參數是一個函數,這裏咱們使用了直接定義一個函數做爲參數的辦法。輸出結果中多了一個NULL函數,這是由於咱們在交互運行,apply的結果做爲一個表達式的值(NULL )會被顯示出來。爲避免顯示,能夠把結果賦給一個臨時變量名,或者把整個表達式做爲invisible() 函數的參數,這時不顯示錶達式值。
S的輸出缺省顯示在交互窗口。能夠用sink()函數指定一個文件以把後續的輸出轉向到這個文件,並可用append參數指定是否要在文件末尾附加: > sink("c:/work/result.txt", append=TRUE)> ls()> d> sink()調用無參數的sink()把輸出恢復到交互窗口。輸入爲了從外部文件讀入一個數值型向量,S提供了scan()函數。若是指定了file參數(也是第一參數),則從指定文件讀入,缺省狀況下讀入一個數值向量,文件中各數據以空白分隔,讀到文件尾爲止。例如:
> cat(1:12, ‘n’, file=’c:/work/result.txt’)
> x <- scan(’c:/work/result.txt’)
若是文件中是一個用空白分隔的矩陣(或數組),咱們能夠先用scan()把它讀入到一個向量而後用matrix()函數(或array()函數)轉換。如:
> y <- matrix(scan(’c:/work/result.txt’), ncol=3, byrow=T)
實際上,scan()也可以讀入一個多列的表格,只要用what參數指定一個列表,則列表每項的類型爲須要讀取的類型。用skip參數能夠跳過文件的開始若干行不讀。用sep參數能夠指定數據間的分隔符。詳見幫助。
scan()不指定讀取文件名時是交互讀入,讀入時用一個空行結束。
若是要讀取一個數據框,S提供了一個read.table()函數。它只要給出一個文件名,就能夠把文件中用空白分隔的表格數據每行讀入爲數據框的一行。好比,文件c:workd.txt 中內容以下: Zhou 
 15  3"Li Ming" 9  李明Zhang 10.2 Wang用read.table讀入: > x <- read.table('c:/work/d.txt', as.is=T)> x       V1   V2   V31 Zhou    15   32 Li Ming 9    李明3 Zhang   10.2 Wang讀入結果爲數據框。函數能夠自動識別表列是數值型仍是字符型,並在缺省狀況下把字符型數據轉換爲因子(加上as.is=T能夠保留字符型不轉換)。函數自動爲數據框變量指定「V1 」、「V2」這樣的變量名,指定「1」、「2」這樣的行名。能夠用col.names參數指定一個字符型向量做爲數據框的變量名,用row.names參數指定一個字符型向量做爲數據框的行名。
read.table()能夠讀入帶有表頭的文件,只要加上header=TRUE參數便可。能夠用sep 參數指定錶行各項的分隔符。例如,爲了讀入以下帶有表頭的逗號分隔文件c:workd.csv: Name,score, cnZhou,15,3Li Ming, 9, 
 李明Zhang, 10.2, Wang使用以下語句: > x <- read.table('c:/ldf/tmp.txt', header=T, sep=',')> x     Name score     cn1    Zhou  15.0      32 Li Ming   9.0   李明3   Zhang  10.2   Wang其它一些用法見幫助。git

相關文章
相關標籤/搜索