R语言 字符串
字符串是一堆字符变量。它是一个一维的字符数组。在R语言中,一个或多个包含在一对单引号或双引号中的字符可以被认为是一个字符串。字符串代表文本内容,可以包含数字、空格和特殊字符。一个空的字符串用”. “来表示。在R语言中,字符串总是以双引号的形式存储,双引号字符串可以包含单引号。单引号字符串不能包含单引号。同样,双引号也不能被双引号所包围。
字符串的创建
字符串可以通过给一个变量分配字符值来创建。这些字符串可以通过使用各种函数和方法进一步串联起来,形成一个大字符串。
例子
# R program for String Creation
# creating a string with double quotes
str1 <- "OK1"
cat ("String 1 is : ", str1)
# creating a string with single quotes
str2 <- 'OK2'
cat ("String 2 is : ", str2)
str3 <- "This is 'acceptable and 'allowed' in R"
cat ("String 3 is : ", str3)
str4 <- 'Hi, Wondering "if this "works"'
cat ("String 4 is : ", str4)
str5 <- 'hi, ' this is not allowed'
cat ("String 5 is : ", str5)
输出
String 1 is: OK1
String 2 is: OK2
String 3 is: This is 'acceptable and 'allowed' in R
String 4 is: Hi, Wondering "if this "works"
Error: unexpected symbol in " str5 <- 'hi, ' this"
Execution halted
字符串的长度
字符串的长度表示字符串中存在的字符数。属于 “字符串 “包的函数 str_length() 或R的内置函数 ncar() 可以用来确定R中字符串的长度。
例1:使用str_length()函数
# R program for finding length of string
# Importing package
library(stringr)
# Calculating length of string
str_length("hello")
输出
5
例2:使用nchar()函数
# R program to find length of string
# Using nchar() function
nchar("hel'lo")
输出
6
访问字符串的部分内容
字符串的单个字符可以通过使用字符串的索引方法从字符串中提取出来。有两个R的内置函数来访问字符串的单个字符和子串。
R中的 substr() 或 substring() 函数从字符串中提取以起始索引为起点、以结束索引为终点的子字符串。它还会用一组新的字符来替换指定的子串。
语法
substr(..., start, end)
or
substring(..., start, end)
例1:使用substr()函数
# R program to access
# characters in a string
# Accessing characters
# using substr() function
substr("Learn Code Tech", 1, 1)
输出
"L"
如果起始索引等于结束索引,则访问字符串的相应字符。在本例中,第一个字符’L’被打印出来。
例2:使用substring()函数
# R program to access characters in string
str <- "Learn Code"
# counts the characters in the string
len <- nchar(str)
# Accessing character using
# substring() function
print (substring(str, len, len))
# Accessing elements out of index
print (substring(str, len+1, len+1))
输出
[1] "e"
字符串中的字符数为10。第一个print语句打印了字符串的最后一个字符 “e”,也就是str[10]。第二个打印语句打印了字符串的第11个字符,这个字符并不存在,但是代码并没有抛出错误,而是打印了””,这是一个空字符。
下面的R代码显示了 字符串切分 的机制,在这个机制中,字符串的子串被提取出来。
# R program to access characters in string
str <- "Learn Code"
# counts the number of characters of str = 10
len <- nchar(str)
print(substr(str, 1, 4))
print(substr(str, len-2, len))
输出
[1]"Lear"
[1]"ode"
第一个打印语句打印了字符串的前四个字符。第二个打印语句打印从索引8到10的子串,也就是 “ODE”。
大小写转换
字符串可以通过R的内置函数 toupper() 将所有字符转换为大写字母, tolower() 将所有字符转换为小写字母, casefold(…, upper=TRUE/FALSE) 根据指定的大参数值进行转换。所有这些函数也可以接受多个字符串作为参数。所有操作的时间复杂度是O(字符串中的字符数)。
例子
# R program to Convert case of a string
str <- "Hi LeArn CodiNG"
print(toupper(str))
print(tolower(str))
print(casefold(str, upper = TRUE))
输出
[1] "HI LEARN CODING"
[1] "hi learn coding"
[1] "HI LEARN CODING"
默认情况下, casefold() 函数中的 upper 值被设置为 FALSE。如果我们把它设置为 “true”,字符串就会被打印成大写。
更新字符串
字符以及字符串的子串可以被操作成新的字符串值。这些变化会反映在原始字符串中。在R语言中,字符串的值可以通过以下方式更新。
substr (..., start, end) <- newstring
substring (..., start, end) <- newstring
可以同时更新多个字符串,开始<=
结束。
- 如果子串的长度大于新的字符串,只有子串中与新的字符串长度相等的部分被替换。
- 如果子串的长度小于新字符串的长度,则子串的位置会被替换成相应的新字符串的值。