玖-R语言关于cat以及print的事情

最近在找工作,想做数据分析那一方面(又不是大数据),结果每个人都要求会R语言,我快崩溃了,于是还是定下心来学一下R语言

刚一开始就发现崩溃了。

一、上网找了一个实例,居然奇奇怪怪!?

首先找到一个教程 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输出的字符都是只能显示在控制台,而控制台只能显示文本,所以你所说的回车、制表符都是原样显示。

好像不错哦,于是我上官网看,找不到相应的解释(或者是我懒得找?)。

好吧,那我还是放弃了,等真正要做的时候再看呗。