作者:啊哈1983_384 | 来源:互联网 | 2023-10-17 19:56
R中自带的字符串连接的函数是paste。
先来看一下官方文档里对paste用法的解释:
基本格式:
paste (…, sep = " ", collapse = NULL)
其中,…表示对象,可以有多个,中间用逗号隔开。
sep表示分隔符,默认为空格。
collapse表示如果不指定值,那么函数paste的返回值是…的对象之间通过sep指定的分隔符连接后得到的一个字符型向量;如果为其指定了特定的值,那么自变量连接后的字符型向量会再被连接成一个字符串,之间通过collapse的值分隔。
举例来说
paste("Hello", "xiaoming", sep = "-")
输出结果:
"Hello-xiaoming"
而如果其中某个对象是向量,会有类似于“循环连接”的效果。
paste("Hello", 1:2, sep = "-")
输出结果:
"Hello-1" "Hello-2"
如果想让上面的变成字符串而不是向量,只需要设置collapse。
paste("Hello", 1:2, sep = "-", collapse = ",")
输出结果:
"Hello-1,Hello-2"
补充:[R字符串] 字符串长度、分割、拼接、截取、替代、匹配和大小写替换
获取字符串长度:nchar()
字符串分割:strsplit()
字符串拼接:paste()
字符串截取:substr()
字符串替代:gsub() chartr() sub()
字符串匹配:grep()
大小写替换:toupper() tolower()
1. 获取字符串长度
nchar()能够获取字符串的长度,它也支持字符串向量操作。注意它和length()的结果是有区别的。
fruit <- "apple orange grape banana"
nchar(fruit)
length(fruit) #元素个数为1
[1] 1
2. 字符串分割
strsplit()负责将字符串按照某种分割形式将其进行划分,需要设定分隔符。下面我们是用空格来作为
分隔符将fruit分为四个元素。
> strsplit(fruit,split=" ")
[[1]]
[1] "apple" "orange" "grape" "banana" #list结构
> fruitvec <- unlist(strsplit(fruit,split=" "))
> fruitvec
[1] "apple" "orange" "grape" "banana" #转化为向量
3. 字符串拼接
paste()负责将若干个字符串相连结,返回成单独的字符串。其优点在于,就算有的处理对象不是字符
型也能自动转为字符型。另一个相似的函数paste0是设置无需分隔符的拼接。
paste(fruitvec,collapse=",") #逗号作为分隔符
[1] "apple,orange,grape,banana"
4. 字符串截取
substr()能对给定的字符串对象取出子集,其参数是子集所处的起始和终止位置。
substr(fruit, 1,5)
[1] "apple"
5. 字符串替代
chartr是字母替换,不是字符串替换。
gsub()负责搜索字符串的特定表达式,并用新的内容加以替代。
sub()函数类似gsub(),但只替代第一个。
> chartr("world","bear",a) #字母替换
Error in chartr("world", "bear", a) : "old" is longer than "new" #字符长度要求一致
> chartr("world","beara",a)
[1] "herre beara"
> x<-"i love you"
> chartr("you","she",x) #实际是字母替换,不是字符串替换
[1] "i lhve she"
> a<-"i love you, do you love me &#63;"
> sub("you","she", a) #只替换第一个参数you
[1] "i love she, do you love me &#63;"
> gsub("you","she", a) #可以替换全部参数
[1] "i love she, do she love me &#63;"
gsub("apple","strawberry",fruit)
[1] "strawberry orange grape banana"
6. 字符串匹配
grep()负责搜索给定字符串对象中特定表达式 ,并返回其位置索引。grepl()函数与之类似,但其后面的”l”则意味着返回的将是逻辑值。
grep("grape",fruitvec) #返回grape在fruitvec中的位置
[1] 3
7. 大小写替换
> a <- "Hello World"
> toupper(a) #全部替换为大写
[1] "HELLO WORLD"
> tolower(a) #全部替换为小写
[1] "hello world"
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程笔记。如有错误或未考虑完全的地方,望不吝赐教。