目录
5.提取字符串substr(string,start,end)
6.根据分隔符分隔字符串strsplit(string,delimiter)
7.替代子串sub(old,new,string) 或gsub(old,new,string)
8.在字符串中查找匹配的字符串regexpr(pattern,text)
一、字符串的处理
1.在字符串向量中搜索给定的字符串
grep(pattern,strings)返回匹配字符串的位置向量
grep("Pole",c("Equator", "North Pole", "South Pole"))
grep("pole",c("Equator", "North Pole", "South Pole"))
从下面的运行结果来看,Pole在第二个和第三个字符中有出现
并且由于R语言区分大小写,pole是无法匹配pole的。
2.获取字符串的长度nchar()
nchar("chain")
s<-c("Moe","Curly","Larry")
nchar(s)
length("chain")
length(s)
从下面的运行结果来看,nchar能够获取向量中每一个元素的长度,但是length获取的仅仅是元素的个数。
3.连接字符串paste()
使用paste()可以将我们的字符串连接在一起
默认情况下是按照空格连接在一起
当然也可以使用sep的方式指定我们连接的字符。
paste("Everybody","loves","R.")
paste("Everybody","loves","R.",sep="-")
paste("Everybody","loves","R.",sep="")
#paste也可以将字符型与数值型连接在一起,再用文本的形式显示出来
paste("The square root of twice pi is approximately",sqrt(2*pi))
#如果是对于向量进行操作的话,paste会对向量中的每一个元素都进行单独的连接操作
stu <- c("Moe","Larry","Curly")
paste(stu, "loves","R.")
#当我们指定collapse参数的时候,
paste会将我们上述对于每一个元素进行的单独的黏连操作用我们collapse中的内容黏连起来
paste(stu, "loves","R",collapse=", and ")
4.将不同类型的对象合成字符串sprintf()
i <- 8
s <- sprintf("the square of %d is %d", i, i^2)
s
5.提取字符串substr(string,start,end)
substr第一个参数为要截取的字符串,后面两个参数分别是截取位置的开始和结尾,
如果对向量进行操作的话,就会对每一个向量进行截取操作。
substr("Statistics",1,4)
substr("Statistics",7,10)
str1 <- c("Moe","Curly","Larry")
substr(str1,1,3)
6.根据分隔符分隔字符串strsplit(string,delimiter)
第一个参数为我们所要分隔的字符串,第二个参数为分隔字符
path <- "/home/mike/data/trials.csv"
strsplit(path,"/")
paths <- c("/home/mike/data/trials.csv",
"/home/mike/data/errors.csv",
"/home/mike/data/reject.doc")
strsplit(paths,"/")
7.替代子串sub(old,new,string) 或gsub(old,new,string)
sub(old,new,string)能够将string中的旧字符替换为新的字符,但是只替换第一个。
gsub(old,new,string)能够将string中的旧字符全部替换为新的字符,(g可以理解为是global的意思)
str1 <- "Curly is the smart one. Curly is funny too."
sub("Curly","Moe", str1)
gsub("Curly","Moe", str1)
8.在字符串中查找匹配的字符串regexpr(pattern,text)
regexpr返回匹配到的第一个位置
gregexpr返回匹配到的全部的位置。(g可以理解为是global的意思)
regexpr("uat","Equator")
gregexpr("iss","Mississippi")
uat出现在第三个字符开始,匹配的字符的长度是3,字符类型为字符类型
iss第一次出现在第二个字符,第二次出现在第五个字符,每次分别匹配三个字符。
9.生成文件名
循环五次,将q+数字+.pdf粘贴起来
pdf()函数为打开pdf文件,参数为pdf的名字
hist为画一个直方图,为标准正太分布的随机数,第一个参数为生成数据的个数,第二个参数应该为mean此处没写,第三个参数为方差。
dev.off()为关闭这个pdf。
for (i in 1:5){
fname <- paste("q",i,".pdf")
pdf(fname)
hist(rnorm(100,sd=i))
dev.off()
}
for (i in 1:5){
fname <- paste("q",i,".pdf",sep="")
pdf(fname)
hist(rnorm(100,sd=i))
dev.off()
}
for (i in 1:5){
fname <- sprintf("q%d.pdf",i)
pdf(fname)
hist(rnorm(100,sd=i))
dev.off()
}
二、日期的处理
1.获取当前的日期
使用Sys.Date()可以获取到我们的当前的系统时间,其生成的数据类型为Date类型
Sys.Date()
class(Sys.Date())
2.将字符串转换为日期类型
如果我们直接as.Date(str)是行不通的,我们还需要使用format方法来告知我们的编译器我们str中每一个数据所代表的意思。%m表示月份%d表示日期,%Y表示年份。(注意这里Y一定要大写)
前后的字符串中的分隔符和后面的format中的分隔符必须保持一致。
str <- "2010-12-31"
class(str)
mydate <- as.Date(str)
class(mydate)
str <- "12/31/2010"
as.Date(str)
as.Date(str,format="%m/%d/%Y")
3.转换日期为字符串
使用format,as.character都可以将我们的日期转化为字符串
注:format的可选值以及其含义
%b表示缩写的月份Jan
%B表示完整的月份January
%d两位数的日期
%m两位数的月份
%y没有世纪的年份17
%Y有世纪的年份2017
format(Sys.Date())
as.character(Sys.Date())
format(Sys.Date(),format="%m/%d/%Y")
4. 得到儒略日期
Julian date表示自1970年1月1日以来的天数
d <- as.Date("2016-06-27")
as.integer(d)
julian(d)