📜  R中的字符串操作

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

R中的字符串操作

字符串操作基本上是指处理和分析字符串的过程。它涉及与修改和解析字符串以使用和更改其数据有关的各种操作。 R 提供了一系列内置函数来操作字符串的内容。在本文中,我们将研究与 R 中的字符串操作有关的不同函数。

字符串的连接

字符串连接是组合两个字符串的技术。字符串连接可以使用多种方式完成:

  • 粘贴()函数

  • 可以使用paste()函数将任意数量的字符串连接在一起以形成更大的字符串。此函数将分隔符作为参数,用于单个字符串元素和另一个参数“collapse”,它反映我们是否希望将字符串作为单个较大的字符串一起打印。默认情况下,collapse 的值为 NULL。
    句法:
paste(..., sep=" ", collapse = NULL)

例子:

# R program for String concatenation
  
# Concatenation using paste() function
str <- paste("Learn", "Code")
print (str)

输出:

"Learn Code"

如果没有指定分隔符,则在各个字符串之间插入默认分隔符“”。

例子:

str <- paste(c(1:3), "4", sep = ":")
print (str)

输出:

"1:4" "2:4" "3:4"

由于要连接的对象具有不同的长度,因此将较小长度的字符串的重复与其他输入字符串一起应用。第一个字符串是 1、2、3 的序列,然后使用分隔符 ':' 将其与另一个字符串“4”单独连接。

str <- paste(c(1:4), c(5:8), sep = "--")
print (str)

输出:

"1--5" "2--6" "3--7" "4--8"

由于两个字符串的长度相同,因此将两者的相应元素连接起来,即第一个字符串的第一个元素使用 sep '-' 与第二个字符串的第一个元素连接。

  • 猫()函数
    可以使用 R 中的cat() )函数将不同类型的字符串连接在一起,其中 sep 指定字符串和文件名之间的分隔符,以防我们希望将内容写入文件。
    句法:
    cat(..., sep=" ", file)

    例子:

    # R program for string concatenation
      
    # Concatenation using cat() function
    str <- cat("learn", "code", "tech", sep = ":")
    print (str)
    

    输出:

    learn:code:techNULL

    输出字符串打印时不带任何引号,默认分隔符为 ':'。NULL 值附加在末尾。
    例子:

    cat(c(1:5), file ='sample.txt')
    

    输出:

    1 2 3 4 5

    输出将写入同一工作目录中的文本文件 sample.txt。

    计算字符串的长度

    • 长度()函数

    • length()函数确定函数中指定的字符串数。
      例子:
      # R program to calculate length
        
      print (length(c("Learn to", "Code")))
      

      输出:

    2

    函数中指定了两个字符串。

  • nchar()函数
    nchar()分别计算指定为函数参数的每个字符串中的字符数。
    例子:
    print (nchar(c("Learn", "Code")))
    

    输出:

    5 4

    输出表示 Learn 和 Code 的长度,用“ ”分隔。

    字符串大小写转换

    • 转换为大写

    • 指定字符串的所有字符都转换为大写。
      例子:
      print (toupper(c("Learn Code", "hI")))
      

      输出 :

    "LEARN CODE" "HI"

  • 转换为小写
    指定字符串的所有字符都转换为小写。
    例子:
    print (tolower(c("Learn Code", "hI")))
    

    输出 :

    "learn code" "hi"

  • casefold()函数
    根据 casefold(..., upper=TRUE) 中的参数,将指定字符串的所有字符转换为小写或大写。
    例子:
    print (casefold(c("Learn Code", "hI")))
    

    输出:

    "learn code" "hi"

    默认情况下,字符串被转换为小写。

    print (casefold(c("Learn Code", "hI"), upper = TRUE))
    

    输出:

    "LEARN CODE" "HI"

    字符替换

    可以使用 R 中的 chartr(oldchar, newchar, ...)函数翻译字符,其中旧字符的每个实例都被指定字符串集中的新字符替换。
    示例 1:

    chartr("a", "A", "An honest man gave that")
    

    输出:

    "An honest mAn gAve thAt"

    'a' 的每个实例都被 'A' 替换。
    示例 2:

    chartr("is", "#@", c("This is it", "It is great"))
    

    输出:

    "Th#@ #@ #t"  "It #@ great"

    旧字符串的每个实例都被新指定的字符串替换。 “i”被“#”替换为“s”被“@”替换,即旧字符串对应的位置被新字符串替换。
    示例 3:

    chartr("ate", "#@", "I hate ate")
    

    输出:

    Error in chartr("ate", "#@", "I hate ate") : 'old' is longer than 'new'
             Execution halted 

    旧字符串的长度应小于新字符串。

    拆分字符串

    可以使用默认分隔符“”将字符串拆分为相应的单个字符串。
    例子:

    strsplit("Learn Code Teach !", " ")
    

    输出:

    [1] "Learn" "Code"  "Teach" "!"

    使用子字符串

    R 中的 substr(..., start, end) 或 substring(..., start, end)函数从以开始索引开始并以结束索引结束的字符串中提取子字符串。它还用一组新的字符替换指定的子字符串。
    例子:

    substr("Learn Code Tech", 1, 4)
    

    输出:

    "Lear"

    从字符串中提取前四个字符。

    str <- c("program", "with", "new", "language")
    substring(str, 3, 3) <- "%"
    print(str)
    

    输出:

    "pr%gram"  "wi%h"     "ne%"      "la%guage"

    用 % 符号替换每个字符串的第三个字符。

    str <- c("program", "with", "new", "language")
    substr(str, 3, 3) <- c("%", "@")
    print(str)
    

    输出:

    "pr%gram"  "wi@h"     "ne%"      "la@guage"

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