文本数据存储在字符向量中(或字符数组中,虽然这比较少见)
字符向量中的每个元素都是字符串,在R中,“字符串”是个常用的非正式术语,因为正式的“字符向量元素”读起来相当拗口
文本的基本单位是字符向量,这意味着大部分字符串处理函数也能用于字符串向量,这与数学运算的向量化方式相同
字符向量可用c
函数创建,可以用单引号或双引号把字符串引用出来,只要引号之间匹配即可,不过使用双引号更为标准
c(
"You should use double quotes most of the time",
'Single quotes are better for including " inside the string'
)
paste
函数能将不同字符串组合起来,在它传入的参数向量中,每个元素都能自我循环以达到最长的矢量长度,然后字符串就被拼接在一起,中间以空格分开
参数sep
可以更改分隔符
paste0
函数无分隔符
collapse
参数把结果收缩成一个包含所有元素的字符串
paste(c("red", "yellow"), "lorry")
## [1] "red lorry" "yellow lorry"
paste(c("red", "yellow"), "lorry", sep = "-")
## [1] "red-lorry" "yellow-lorry"
paste(c("red", "yellow"), "lorry", collapse = ", ")
## [1] "red lorry, yellow lorry"
paste0(c("red", "yellow"), "lorry")
## [1] "reslorry" "yellowlorry"
toString
函数是paste
的变种,在打印向量时非常有用,使用逗号和空格分隔每个元素,且可限制打印的数量,width
参数将限制输出字符数
cat
函数是一个低级函数,工作原理类似于paste,不过格式功能更少,将很少直接调用它,它是大部分print函数的基础,cat可接受一个file参数,将输出写入文件
cat(c("red", "yellow"), "lorry")
## [1] "red yellow lorry"
一般情况下,当字符串打印到控制台时,它们会以双引号括起来
noquote
函数 去掉这些引号,可以使文本更具可读性
formatC
可使用C语言的格式化风格来指定使用固定型或科学型的格式、小数的位数以及输出的宽度
输入都为numeric类型(包括数组),且输出为character字符向量或数组
参数 digits width format flag
更通用的C风格的格式化函数sprintf
,第一个参数包含字符串或数字变量的占位符,其它参数将逐个代入这些占位符
R中大部分的数值是浮点值而非整数
%s 另一个字符串
%f 固定型格式浮点数
%e 科学型格式浮点数
%d 整数
和paste函数类似,较短长度的输入将循环自身以匹配最长的输入
sprintf("%s %d = %f", "Euler's constant to the power", pow, powers_of_e)
此外,还有format
和prettyNum
两个函数
format提供的格式化字符串的语法稍有不同,和formatC的用法基本相似
prettyNum非常适合于格式化那些非常大或非常小的数字
有一些特殊的字符可以被包含在字符串中
\t 制表符
\n 换行符
\r 将光标移动到当前行的开始并覆盖所写的内容
\0 空字符,终止字符串,然而,显式地将它们包含在字符串中是错误地
\ 打印反斜杠
" 打印双引号
如果在被引用的字符串中使用单引号,或在被单引号引用的字符串中使用双引号,则不需要对其进行转义
\a 打印报警符 当想要在一个耗时很长的分析任务结束后主动通知时 alarm()
toupper
tolower
substring
substr
这两个函数,大多数情况下可以任选,当传入了不同长度的向量参数,它们的行为会略有不同
substring
输出的长度和最长的输入一样
substr
输出的长度只和第一个输入的相等
strsplit
返回一个列表(而非字符向量或矩阵)
fixed = T
意味着split的参数是固定长度的字符串而非正则表达式
strsplit(woodchuck, " ", fixed=T)
R有一个工作目录,默认为文件被读写的地方,可以使用getwd
查看其位置
setwd
改变工作目录
getwd()
## [1] "d:/workspace/LearningR"
setwd("c:/windows")
getwd()
## [1] "c:/windows"
每个路径的目录部分由正斜杠分割
双反斜杠也可以
file.path
从各个目录中创建文件路径,它会自动地在目录名称之间插入正斜杠,就像一个更加简单快速的为处理路径而定制的paste函数
file.path("c:", "Program Files", "R". "R-devel")
## [1] "c:/Program Files/R/R-devels"
R.home() # 同样也是R的安装目录
## [1] "c:/Program Files/R/R-devels"
path.expand
能将相对路径转换为绝对路径
basename
只返回文件名,而不包括前面的目录位置
dirname
只返回文件的目录