1. 程式人生 > 實用技巧 >R語言關於cat和print

R語言關於cat和print

一、上網找了一個例項,居然奇奇怪怪!?

首先找到一個教程 R語言簡單實現聚類分析計算與分析(基於系統聚類法),由於找不到他當時的資料來源,於是下載了一個最新的房價資料
對於不同的聚類方法都做了一次,結果發現崩潰的事情來了。
輸出的程式碼:

for (i in 1:5) {
print(paste("",i,""))
print(china[re[[i]],]$地區)
}

輸出的結果是這樣子的:

[1] "第 1 類"
 [1] 廈門市 北京市 無錫市 杭州市 廣州市 深圳市 合肥市 上海市 南京市 武漢市
70 Levels: 安慶市 蚌埠市 包頭市 北海市 北京市 常德市 成都市 大理白族自治州 大連市 丹東市 福州市 贛州市 廣州市 貴陽市 桂林市 哈爾濱市 海口市 杭州市 合肥市 呼和浩特市 惠州市 吉林市 濟南市 濟寧市 金華市 錦州市 九江市 昆明市 ... 遵義市
[
1] "第 2 類" [1] 溫州市 泉州市 牡丹江市 銀川市 丹東市 包頭市 西寧市 錦州市 桂林市 70 Levels: 安慶市 蚌埠市 包頭市 北海市 北京市 常德市 成都市 大理白族自治州 大連市 丹東市 福州市 贛州市 廣州市 貴陽市 桂林市 哈爾濱市 海口市 杭州市 合肥市 呼和浩特市 惠州市 吉林市 濟南市 濟寧市 金華市 錦州市 九江市 昆明市 ... 遵義市 [1] "第 3 類" [1] 寧波市 金華市 海口市 岳陽市 南充市 湛江市 重慶市 安慶市 宜昌市 常德市 贛州市 哈爾濱市 烏魯木齊市 蚌埠市 徐州市 [
16] 揚州市 成都市 瀘州市 昆明市 煙臺市 南寧市 平頂山市 北海市 瀋陽市 貴陽市 韶關市 襄陽市 大連市 九江市 長春市 [31] 太原市 秦皇島市 濟寧市 蘭州市 唐山市 吉林市 遵義市 洛陽市 大理白族自治州 呼和浩特市
70 Levels: 安慶市 蚌埠市 包頭市 北海市 北京市 常德市 成都市 大理白族自治州 大連市 丹東市 福州市 贛州市 廣州市 貴陽市 桂林市 哈爾濱市 海口市 杭州市 合肥市 呼和浩特市 惠州市 吉林市 濟南市 濟寧市 金華市 錦州市 九江市 昆明市 ... 遵義市 [1] "第 4 類" [1] 三亞市 西安市 70 Levels: 安慶市 蚌埠市 包頭市 北海市 北京市 常德市 成都市 大理白族自治州 大連市 丹東市 福州市 贛州市 廣州市 貴陽市 桂林市 哈爾濱市 海口市 杭州市 合肥市 呼和浩特市 惠州市 吉林市 濟南市 濟寧市 金華市 錦州市 九江市 昆明市 ... 遵義市 [1] "第 5 類" [1] 鄭州市 福州市 天津市 石家莊市 長沙市 濟南市 青島市 惠州市 南昌市 70 Levels: 安慶市 蚌埠市 包頭市 北海市 北京市 常德市 成都市 大理白族自治州 大連市 丹東市 福州市 贛州市 廣州市 貴陽市 桂林市 哈爾濱市 海口市 杭州市 合肥市 呼和浩特市 惠州市 吉林市 濟南市 濟寧市 金華市 錦州市 九江市 昆明市 ... 遵義市

二、輸出結果的樣式

好吧,我是CSV匯入的,我現在想試著把它V回Excel裡面看看各種分類代表的是什麼,但你這麼一行十幾個市我怎麼V啊!於是想修改下R語言程式碼顯示每行一個,在每個市後面加個\n會不會好一點呢?
結果:

for (i in 1:5) {
print(paste("",i,""))
print(paste(china[re[[i]],]$地區,",",i,"\n"))
}

結果輸出了:

[1] "第 1 類"
[1] "廈門市 , 1 \n" "北京市 , 1 \n" "無錫市 , 1 \n" "杭州市 , 1 \n" "廣州市 , 1 \n" "深圳市 , 1 \n" "合肥市 , 1 \n" "上海市 , 1 \n" "南京市 , 1 \n" "武漢市 , 1 \n"
[1] "第 2 類"
[1] "溫州市 , 2 \n"   "泉州市 , 2 \n"   "牡丹江市 , 2 \n" "銀川市 , 2 \n"   "丹東市 , 2 \n"   "包頭市 , 2 \n"   "西寧市 , 2 \n"   "錦州市 , 2 \n"   "桂林市 , 2 \n"  
[1] "第 3 類"
 [1] "寧波市 , 3 \n"         "金華市 , 3 \n"         "海口市 , 3 \n"         "岳陽市 , 3 \n"         "南充市 , 3 \n"         "湛江市 , 3 \n"         "重慶市 , 3 \n"         "安慶市 , 3 \n"         "宜昌市 , 3 \n"        
[10] "常德市 , 3 \n"         "贛州市 , 3 \n"         "哈爾濱市 , 3 \n"       "烏魯木齊市 , 3 \n"     "蚌埠市 , 3 \n"         "徐州市 , 3 \n"         "揚州市 , 3 \n"         "成都市 , 3 \n"         "瀘州市 , 3 \n"        
[19] "昆明市 , 3 \n"         "煙臺市 , 3 \n"         "南寧市 , 3 \n"         "平頂山市 , 3 \n"       "北海市 , 3 \n"         "瀋陽市 , 3 \n"         "貴陽市 , 3 \n"         "韶關市 , 3 \n"         "襄陽市 , 3 \n"        
[28] "大連市 , 3 \n"         "九江市 , 3 \n"         "長春市 , 3 \n"         "太原市 , 3 \n"         "秦皇島市 , 3 \n"       "濟寧市 , 3 \n"         "蘭州市 , 3 \n"         "唐山市 , 3 \n"         "吉林市 , 3 \n"        
[37] "遵義市 , 3 \n"         "洛陽市 , 3 \n"         "大理白族自治州 , 3 \n" "呼和浩特市 , 3 \n"    
[1] "第 4 類"
[1] "三亞市 , 4 \n" "西安市 , 4 \n"
[1] "第 5 類"
[1] "鄭州市 , 5 \n"   "福州市 , 5 \n"   "天津市 , 5 \n"   "石家莊市 , 5 \n" "長沙市 , 5 \n"   "濟南市 , 5 \n"   "青島市 , 5 \n"   "惠州市 , 5 \n"   "南昌市 , 5 \n"  
> 

你在逗我麼?
於是我不停上網找,發現,還有一個輸出到螢幕的方法哦,就是cat函式,一用,誒發現可以了

for (i in 1:5) {
print(paste("",i,""))
cat(paste(china[re[[i]],]$地區,",",i,"\n"))
}

[1] "第 1 類"
廈門市 , 1 
 北京市 , 1 
 無錫市 , 1 
 杭州市 , 1 
 廣州市 , 1 
 深圳市 , 1 
 合肥市 , 1 
 上海市 , 1 
 南京市 , 1 
 武漢市 , 1 
[1] "第 2 類"
溫州市 , 2 
 泉州市 , 2 
 牡丹江市 , 2 
 銀川市 , 2 
 丹東市 , 2 
 包頭市 , 2 
 西寧市 , 2 
 錦州市 , 2 
 桂林市 , 2 
[1] "第 3 類"
寧波市 , 3 
........


三、為什麼會這樣子

其實,到底為什麼cat和print會有這種不同呢?
這是一個迷,不過R語言輸出格式問題這帖子有說過:

print輸出的字元都是隻能顯示在控制檯,而控制檯只能顯示文字,所以你所說的回車、製表符都是原樣顯示。