🧵 一、创建字符串
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
的一部分,语法统一,推荐日常使用!
🧪 小练习题(建议试试)
- 编写一个函数,输入姓名,返回欢迎语:“你好,XXX!”
- 将一个字符串
"I love R programming"
转为全大写,并统计字母数。 - 使用
strsplit()
把"apple,banana,pear"
分割为向量。 - 使用
gsub()
将"2025-04-18"
中的-
替换为/
。
如果你正在做文本挖掘、自然语言处理、或需要批量清洗数据里的字符串内容,我可以推荐一些更高级工具(比如 stringi
、stringr
+ 正则表达式)。需要我继续讲讲正则表达式在 R 中的用法吗?🧙♂️
发表回复