📜  R - 字符串

📅  最后修改于: 2022-05-13 01:55:43.191000             🧑  作者: Mango

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"

    用指定的符号交替替换每个字符串的第三个字符。