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
字符串长度
字符串的长度表示字符串中存在的字符字符串。
属于'stringr'包的函数str_length()
或 R 的nchar()
内置函数可用于确定 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 的内置函数可以访问单个字符以及 string 的子字符串。
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。第一个打印语句打印字符串的最后一个字符“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()
转换为大写或小写,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
可以一次更新多个字符串,开始 <= 结束。
- 如果子字符串的长度大于新字符串,则仅替换子字符串中等于新字符串长度的部分。
- 如果子字符串的长度小于新字符串,则将子字符串的位置替换为相应的新字符串值。
示例 1:
str <- c("program", "with", "new", "language") substring(str, 2, 2) <- "%" print(str)
输出:
[1] "p%ogram" "w%th" "n%w" "l%nguage"
用 % 符号替换每个字符串的第三个字符。
示例 2:
str <- c("program", "with", "new", "language") substring(str, 2, 2) <- "%" print(str)
输出:
"**!gram" "**!h" "**!" "**!guage"
示例 3:
str <- c("program", "with", "new", "language") substr(str, 3, 3) <- c("%", "@") print(str)
输出:
"pr%gram" "wi@h" "ne%" "la@guage"
用指定的符号交替替换每个字符串的第三个字符。