8.1 幽灵(no.21~no.30)

8.1.21 没有部分匹配的任务

部分匹配的一个最重要的副作用是当你做替换操作时使你变傻:

> ll2 <- list(aa=1:3, bb=4:6)
> ll2$b
[1] 4 5 6
> ll2$b <- 7:9
> ll2
$aa
[1] 1 2 3
$bb
[1] 4 5 6
$b
[1] 7 8 9

这也适用于数据框(毕竟数据框也是列表)。

8.1.22 cat和print

如果你要print一个没有名字的向量,那么在每一行的第一个元素前有一个索引指示。

> options(width=20)
> 1:10
[1] 1 2 3 4 5
[6] 6 7 8 9 10

另外,cat仅仅输出向量的内容:

> cat(1:10)
1 2 3 4 5 6 7 8 9 10>

注意到cat输出后没有新的一行,你需要自己加上:

cat(1:10, ’\n’)

print和cat根本的区别—cat实际上在解释它得到的字符串信息:

> xc <- ’blah\\blah\tblah\n’
> print(xc)
[1] "blah\\blah\tblah\n"
> cat(xc)
blah\blah   blah
>


字符串是个双面手。一方面是字符串事实上所传递的信息(cat 输出)。另一方面是一个允许你看到所有字符的解释—这个字符串事实上是怎么构成的(print 输出)。不要将两者搞混。

重新读这个条目—它非常重要。怎么说呢,如果你不理解它,你将会浪费大量的实践在周围摸索,得不偿失。

8.1.23 反斜杠

反斜杠在R(Unix,C)中是转义字符。既然反斜杠并不代表反斜杠,那么就需要一种方法表示反斜杠。相当逻辑的这个方法就是反斜杠-反斜杠。

> cat(’\\’)
\>

有时文本需要在文本需要注释的地方加入反斜杠。在注释中每一对反斜杠变成了一个反斜杠。

有两个非常常见的字符带有反协防:\t是tab,\n是新的一行。表8.1展示了你经常会遇到的使用反斜杠的字符串。你可以看到整个列表:

?Quotes

注意到nchar()返回一个逻辑字符串的数量,并不是创造它们所需要的键盘敲击次数:

> nchar(’\\’)
[1] 1

8.1.24 国际化

并非所有人都在用同一种语言书写代码,这或许会事一些人感到惊奇。为了确保这个,R允许编码中包含latin1和UTF-8。

还有使用不同路径的可能性。路径可以影响代码存储命令。
多种编码格式和多种路径的选择自由使你需要花费数小时调整它们使自己迷惑。

更多信息:

> ?Encoding
> ?locales

8.1.25 Windows 下的路径

Quite unfortunately Windows uses the backslash to separate directories in paths.
Consider the R command:
attach(’C:\tmp\foo’)

相当不幸的是Window使用反斜线来区分路径中的目录。考虑以下命令:

attach(’C:\tmp\foo’)

这对字符串的双面性质造成困惑。事实上这个字符串包括:C,冒号,tab,m,p,formfeed,o,o。没有反斜线。这个字符串真正想说的是:

attach(’C:\\tmp\\foo’)

然而,在所有情况下R允许你在Windows路径中使用斜杠代替反斜杠—在内核中会被翻译:

attach(’C:/tmp/foo’)

如果你试图复制粘贴Windows路径进入R,你将会得到一个带有不被辨认的换页符警告的字符串。一种方法是将其粘贴到:

scan(’’, ’’, n=1)

8.1.26 引用

有三种类型的引号,一个山寨产业已经开发了包含字符串引用的R函数。表8.2展示了从不同方面考虑引用的函数列表。函数bquote()基本上是应用最广泛的—和函数substitute()很相似。

双引号和单引号—实质上的代名词—被用来限定字符型的字符串。如果限定字符串的引号就在字符串中,它需要用一个反斜杠来转义。

> ’"’
[1] "\""

一个反引号用来限定一个名字,通常这个名字打破一个对象的通用命名惯例。

> ’3469’
[1] "3469"
> '3469'
Error: Object "3469" not found
> '2' <- 2.5
> '2' + '2'
[1] 5

8.1.27 反引号

反引号在列表成员命名时有字母的情况下和一些不合法的名字上。没必要恐慌。

> ll3 <- list(A=3, NA=4)
Error: unexpected ’=’ in "ll3 <- list(A=3, NA="
> ll3 <- list(A=3, ’NA’=4)
> ll3 <- list(A=3, ’NA’=4, ’for’=5)
> ll3
$A
[1] 3
$ 'NA'
[1] 4
$ 'for'
[1] 5
> ll3$’for’
[1] 5

尽管成员名字带着反引号被打印出来,你可以使用常用的引号进行打印它们。一开始列表的初始化失败的原因是NA被认为是第二个成员—没有命名的数据。

8.1.28 消失的属性(I)

大多数强制转换类型的函数都会将对象的属性剥夺掉。比如:

as.numeric(xmat)

的结果将不会是一个矩阵了。下述命令既进行强制转换又会保持对象的属性:

storage.mode(xmat) <- ’numeric’

8.1.29 消失的属性(II)

> x5 <- 1
> attr(x5, ’comment’) <- ’this is x5’
> attributes(x5)
$comment
[1] "this is x5"
> attributes(x5[1])
NULL

下标查找几乎总是略去了所有属性。
如果你想保留属性的话,一个解决方法是为你的对象创建一个类,然后为你类的”[“写一个函数。

8.1.30 当空格出现问题

空格,或者没有空格,除了提供很好的阅读性之外,很少在R命令中有区别。
下面一例中空格将在R的解析器中造成麻烦。

x<-3

这将被解释为:

x <- 3

或者

x < -3

这将促使你使用空格键。使代码清晰最重要的方法是在"<-"两边放置空格。不幸的是这并不会解决上面例子中的问题–在进行比较的时候空格是绝对需要的。

8.1 幽灵(no.21-no.30)相关推荐

  1. 8.2 喀迈拉(no.21~no.30)

    8.2 喀迈拉(no.21~no.30) 8.2.21 is.matrix is.matrix会造成惊喜,不仅因为在R和S+中会返回不同的答案. > is.matrix(1:3) [1] FAL ...

  2. 新概念英语(第三册)复习(原文)——Lesson 21 - Lesson 30

    Lesson 21 - Daniel Mendoza Lesson 22 - By heart Lesson 23 - One man's meat is another man's poison L ...

  3. 幽灵行动断点量子计算机30秒,游戏新消息:幽灵行动断点BETA公测时间公布中字版真人宣传片...

    对于不少小伙伴们来说,如今的生活,工作之中处处都是充满了压力,那么如何来释放压力呢?多数人把压力在游戏之中来进行释放宣泄,那么游戏也就成为了现在多数年轻小伙伴们颇为关注的点了,那么今天小编也是特地整理 ...

  4. Dream City(01背包+小贪心)acm寒假集训日记21/12/30

    题目如下: AC代码如下: #include<iostream> #include<algorithm> #include<cstring> #include< ...

  5. 【笔试面经】21.12.30 疯狂游戏研发岗(C++)笔试

    疯狂游戏研发岗(C++)笔试,用时90min 编程题 矩阵转置 图片纵向翻转 问答题 编程题 一共两道编程题.第一次用牛客网考试的我,才知道编程是连获取输入输出方法都要自己写的,结果就从第一步开始就失 ...

  6. sql server 配置管理器里为什么是32位_幽灵山庄49 储物柜里的恶臭

    情节回顾: 幽灵山庄1 我的邻居是变性人 幽灵山庄 2 一个可以帮你实现所有梦想的地方 幽灵山庄 3 我的变性人邻居死了 幽灵山庄4 世界上除了双胞胎,还会有长得如此相像的人吗 幽灵山庄5 在恐怖城走 ...

  7. mysql 源码安装 5.6.21_Mysql5.6.21源码安装

    做了3年运维,个人笔记倒是挺多,没有好好整理,有分享精神,比较懒,大学注册的账号,但是一直没有写过任何技术文档,羞愧.很认同一句话,搞技术一定要有分享精神. 环境描述 安装包:mysql-5.6.21 ...

  8. Mysql5.6.21源码安装

    做了3年运维,个人笔记倒是挺多,没有好好整理,有分享精神,比较懒,大学注册的账号,但是一直没有写过任何技术文档,羞愧.很认同一句话,搞技术一定要有分享精神. 环境描述 安装包:mysql-5.6.21 ...

  9. PKUSC2018训练日程(4.18~5.30)

    (总计:共66题) 4.18~4.25:19题 4.26~5.2:17题 5.3~5.9: 6题 5.10~5.16: 6题 5.17~5.23: 9题 5.24~5.30: 9题 4.18 [BZO ...

最新文章

  1. 《程序设计与数据结构》实验四报告
  2. html语言中 加当前时间,javascript中怎么获取当前时间?
  3. 分享一个java对xml,excel,jdbc.properties,读写文件,读写图片等实现(1)
  4. 安装vsftpd-3.0.2.tar.gz源码
  5. php实现tail,Linux-如何用php实现Linux下的tail -f命令?
  6. Greys Java在线问题诊断工具
  7. win下修改mysql默认的字符集以防止乱码出现
  8. 理解SSD多盒-实时目标检测
  9. php 小程序自定义图,微信小程序之如何使用自定义组件封装原生 image 组件
  10. python itertools卡死_Python使用itertools模块来解决算法问题,python
  11. 女方家长和男方家长第一次见面是怎么样的?
  12. 21.卷1(套接字联网API)---多播
  13. 基于stm32单片机智能温控风扇控制系统Proteus仿真(源码+仿真+全套资料)
  14. Python全栈最全学习之路-Python基础(十一)
  15. 通灵学院|游戏设计研习1:人类的需求与动机★(1200字)
  16. 线性代数 | (3) 行列式
  17. Creo8.0将默认单位永久设置为公制毫米的方法
  18. 在Domino上部署运行在Web浏览器中的Notes客户机
  19. 计算机专业教务工作总结,计算机系阶段工作总结
  20. 远程连接服务器突然失败

热门文章

  1. 如何一键删除计算机的更新,快速清除win7系统更新缓存文件的详细步骤
  2. 『抽丝剥茧』手把手快速上带你开启文心大模型的奇妙冒险
  3. 数学建模学习——分类模型
  4. 开发环境 EAS登录 license 许可修改
  5. 易风互联网邮件监控系统 v2.21 怎么用
  6. 《C#零基础入门之百识百例》(五十二)封装介绍 -- 二维多项式求值
  7. mysql数据库学习之索引
  8. C语言_指针动态内存分布
  9. 高等学校学生公寓消防安全设计及管理设计要点
  10. Ghost高级教程——克隆备份