🧵 一、创建字符串

s1 <- "Hello"
s2 <- 'World'

  • 单引号 ' 和双引号 " 都可以
  • 多行字符串可以用 paste() 拼接

🔧 二、基本字符串操作

🔹 拼接字符串:paste() / paste0()

paste("Hello", "World")        # "Hello World"
paste("R", 4, sep = "-")       # "R-4"
paste0("R", 4)                 # "R4"(无空格)


🔹 字符串长度:nchar()

nchar("Hello R")   # 7


🔹 改变大小写

toupper("hello")   # "HELLO"
tolower("WORLD")   # "world"


🔹 截取子串:substr() / substring()

substr("abcdef", 2, 4)         # "bcd"
substring("abcdef", 3)         # "cdef"


🧰 三、查找与替换

🔹 查找字符位置:grep() / grepl()

x <- c("apple", "banana", "pear")
grep("a", x)         # 返回索引(1, 2, 3)
grepl("b", x)        # 返回逻辑值 (FALSE, TRUE, FALSE)


🔹 替换字符串:gsub()(全替换) / sub()(只替换第一个)

gsub("a", "A", "banana")  # "bAnAnA"
sub("a", "A", "banana")   # "bAnana"


🧩 四、字符串分割与合并

🔹 拆分字符串:strsplit()

strsplit("a,b,c", split = ",")
# [[1]] [1] "a" "b" "c"


🔍 五、字符串格式化:sprintf()

name <- "R"
sprintf("Hello, %s!", name)      # "Hello, R!"
sprintf("π ≈ %.2f", pi)          # "π ≈ 3.14"


🔥 六、字符串处理神器:stringr 包(推荐使用)

library(stringr)

str_length("hello")              # 5
str_sub("abcdef", 2, 4)          # "bcd"
str_to_upper("r language")       # "R LANGUAGE"
str_detect("banana", "an")       # TRUE
str_replace_all("a-b-c", "-", "_")  # "a_b_c"

📦 stringr 是 tidyverse 的一部分,语法统一,推荐日常使用!


🧪 小练习题(建议试试)

  1. 编写一个函数,输入姓名,返回欢迎语:“你好,XXX!”
  2. 将一个字符串 "I love R programming" 转为全大写,并统计字母数。
  3. 使用 strsplit() 把 "apple,banana,pear" 分割为向量。
  4. 使用 gsub() 将 "2025-04-18" 中的 - 替换为 /

如果你正在做文本挖掘、自然语言处理、或需要批量清洗数据里的字符串内容,我可以推荐一些更高级工具(比如 stringistringr + 正则表达式)。需要我继续讲讲正则表达式在 R 中的用法吗?🧙‍♂️