跳至主要内容

R 中的字符串教程

了解 R 中的字符串:其规则、连接方式,以及字符串的基本属性、提取与替换字符字符串、格式化字符串等。
· 8分钟 阅读

使用 AI 探索

字符串是由一个字符或一组字符组成的字符型数据。它可以用单引号('This is a string')或双引号("This is also a string")包裹。但在 R 的内部表示中,字符串以双引号表示。

在本教程中,您将学习 R 中的字符串,涵盖以下主题:

  1. 首先,了解 R 中的字符串以及 R 中字符串的规则。
  2. 接着,深入学习字符串在 R 中的连接方式以及字符串的其他基本属性。
  3. 同时,将详细说明如何提取和替换字符字符串。
  4. 最后,介绍字符串格式化,即将任意向量输入转换为格式良好的输出。

R 中字符串的规则

    1. 以单引号开始的字符串需要以单引号结束。不过,您可以在其中放入双引号,并通过转义序列('\')让单引号也成为字符串的一部分。

例如:'cars'、'merry"s'、'merry\'s' 都是 R 中有效的字符串。

    1. 以双引号开始的字符串需要以双引号结束。不过,您可以在其中放入单引号,并通过转义序列('\')让双引号也成为字符串的一部分。

例如:"cars"、"merry's"、"merry\"s" 也都是 R 中有效的字符串。

字符串的连接

字符串的连接是指将多个字符串拼接或合并。

在 R 中连接字符串的语法为:
paste(..., sep = "",collapse = NULL)
paste0(..., collapse = NULL)

上述 paste 的参数含义如下:

  1. '...'——表示一个或多个字符或对象,这些对象会被转换为字符向量。
  2. 'sep'——表示分隔字符。
  3. 'collapse'——表示可选的合并分隔字符。

例如,下面的示例中变量包含字符字符串: my.var1 = "I" my.var2 = "eat" my.var3 = "rice" print(paste(my.var1,my.var2,my.var3))

上述代码返回一个如下的单一字符串:

"I eat rice"

再例如,下面的示例中变量包含的向量会被合并为一个字符串:

my.var1 = c('Book','Copy') my.var2 = c('Pen','Chair') print(paste(my.var1,my.var2,sep=" ",collapse="-"))

上述代码的输出为:

"Book Pen-Copy Chair"

这里,由于使用了 collapse,会在 Pen 和 Copy 之间加入一个 '-',用于分隔两个不同的向量。相对地,sep 包含一个空格(' '),用来分隔每个对应项。

再看一个使用 paste0() 的示例。

paste0() 等价于使用 sep = ''(即无空格),并以其高效而常用。

state.name <- paste0('Mary','l','and')
print(state.name)

上述代码的输出如下,所有字符被合并为一个,且没有通过 sep 添加空格。

"Maryland"

求长度

nchar(char,type, allowNA,keepNA)——求给定向量中字符的总数。
nzchar(char)——如果 x 非空返回 TRUE,若为空字符串则返回 FALSE。

上述参数含义如下:

  1. char——表示一个字符向量。
  2. type——表示三种类型之一,即 "width"、"chars"、"bytes"。
  3. allowNA——逻辑值,默认 FALSE;若结果无法计算,不会报错而是返回 NA。
  4. keepNA——逻辑值,默认 FALSE;此时缺失值会映射为 2,nzchar() 会给出 TRUE;对于缺失值,这两者都会映射为 TRUE。

下面的示例用于确定字符向量的长度。 my.char = nchar("hello") print(my.char)

上述示例返回“5”,因为该向量中共有五个字符。

关于 nzchar() 的示例如下:

new.char = nzchar("monkey") print(new.char)

上述代码返回逻辑值 TRUE,因为 'new.char' 不是空字符串。

my.char = nzchar("") print(my.char)

上述代码返回逻辑值 FALSE,因为 'my.char' 是空字符串。

大小写转换

toupper(char)——将所有字符转换为大写。
tolower(char)——将所有字符转换为小写。

来看一个转换为大写的示例。 my.var = toupper("I'm changed to upper case") print(my.var)

上述代码的输出如下,变量 'my.var' 中的每个字符均被转换为大写。

"I'M CHANGED TO UPPER CASE"

再看一个转换为小写的示例。 my.var = tolower("I'm changed to lower case") print(my.var)

上述代码的输出如下,变量 'my.var' 中的每个字符均被转换为小写。

""i'm changed to lower case""

提取与替换字符字符串

substr(char, start, stop):用于提取与替换字符字符串。

参数含义如下:

  1. char——表示一个字符字符串。
  2. start——表示对应的起始位置(整数)。
  3. stop——表示对应的结束位置(整数)。

来看一个提取字符的示例。

final.value <- substring('Remaining', 3, 9)
print(final.value)

在上述代码中,'Remaining' 是字符串,首个字符 'R' 的索引为整数 1。最后一个字符 'g' 的索引为整数 9。

上述代码的输出如下:起始值为整数 3,对应 'Remaining' 中的字符 ' m '。随后直到整数 9(包含 9)对应的字符 'g',即其他字符 'ainin' 一并被打印出来。

"maining"

再看一个替换字符的示例。

y = "Remaining"
substring(y, 3, 5) <- "der"
print(y)

上述代码的输出显示:y 中从 3 到 5 的位置及其对应字符被替换为 'der'。

"Rederning"

substring(char, first, last = 1000000L):用于提取或替换字符字符串。
参数含义如下:

  1. char——表示一个字符字符串。
  2. first——表示对应的起始位置(整数)。
  3. last——表示对应的结束位置(整数),默认值为 1000000L。
my.value <- substring('Remaining', 3, 8)
print(my.value)

上述代码的输出如下:起始值为整数 3,对应 'Remaining' 中的字符 ' m '。随后直到整数 8(包含 8)对应的字符 'n' 的其他字符一并被打印出来。

"mainin"

再看一个替换字符的示例。

y = "newcharacter"
substring(y, 6,9) <- "???"
print(y)

上述代码的输出显示:y 中从 6 到 9 的位置及其对应字符被替换为 '???'。

"newch???cter"

字符串格式化

format(char,width,scientific,justify,nsmall,digits):将整数与字符向量转换为常用的格式。

参数含义如下:

  1. char——可以是整数或字符向量。
  2. width——表示生成字符串的最小宽度。
  3. scientific——默认 FALSE;设为 TRUE 使用科学计数法。
  4. justify——默认无对齐;可显示为 "right"、"left" 和 "center"。
  5. nsmall——表示小数点后保留的位数。
  6. digits——表示整体有效位数(包含小数点前后)。

来看一个使用科学计数法格式化字符串的示例。

my.var <- format(c(2, 19.267), scientific = TRUE)
print(my.var)

上述代码的输出以科学(指数)计数法表示:

"2.0000e+00" "1.9267e+01"

输出 "1.9267e+01" = 1.9267 × 10(1 次方)= 1.9267 × 10 = 19.267。

来看一个使用 nsmall 格式化的示例。

my.var <- format(92.56656577, nsmall = 6)
print(my.var)

上述代码的输出如下,小数点后包含 6 位数字。

"92.566565"

来看一个使用 digits 格式化的示例。

my.var <- format(102.848793834, digits = 7)
print(my.var)

上述代码的输出如下,从小数点前到小数点后共计保留 7 位有效数字。

"102.8488"

输出共包含 7 位数字;按四舍五入规则,最后一位应为 7,但由于其前一位(9)大于 7,进位后变为 8。简单来说,发生了四舍五入。

来看一个使用右对齐进行格式化的示例。

my.var <- format('Running', justify = 'r',width = 9)
print(my.var)

上述代码的输出如下,字符 'Running' 以给定宽度在右侧对齐。

"  Running"

来看一个使用居中对齐进行格式化的示例。

my.var <- format('Running', justify = 'c',width = 12)
print(my.var)

上述代码的输出如下,字符 'Running' 在左右留出一定宽度后居中对齐。

"  Running   "

恭喜您

恭喜您学完本教程!

您已了解 R 中的字符串:其规则、连接方式,以及字符串的基本属性、字符字符串的提取与替换、以及字符串格式化。

如果您想进一步学习 R,请参加 DataCamp 的R 入门课程。

欢迎查看我们的R 中的数据类型教程。

主题