mobile wallpaper 1
319 字
1 分钟
R语言字符串与日期处理
2026-06-29

字符串处理#

使用基础函数进行分割和拼接:

code.R
# 分割
strsplit("2021年2月28日", split = "年|月|日") # [[1]] "2021" "2" "28" ""
# 拼接:paste 有空格,paste0 无空格
paste("R语言", "要用心体会", sep = ",") # [1] "R语言,要用心体会"
paste0(1:12, c("st", "nd", "rd", rep("th", 9)))

正则表达式#

R 支持强大的正则表达式,常用 grep()sub()gsub() 进行模式匹配和替换。

code.R
txt <- c("The", "software", "is", "free")
grep("^s", txt, value = TRUE) # 匹配以 s 开头的字符串
grep("e$", txt, value = TRUE) # 匹配以 e 结尾的字符串
# 替换
sub(" +$", "", " 10am ") # 去除尾部多余空格

日期处理#

code.R
today <- Sys.Date() # 取当前系统日期
gtd <- as.Date("2024-10-14") # 字符串转日期格式
# 格式化输出
format(today, "%Y年%m月%d日")
# 计算日期差
difftime(today, gtd, units = "days")

进阶补充:底层性能与高级正则#

  • 全局字符串池(Global String Pool):R 在内部使用一个哈希表来存储所有的唯一字符串(CHARSXP)。这意味着即使一个包含百万条相同字符串的向量,在内存中也只存储一份实际字符数据,极大地节省了内存。
  • 正则表达式的零宽断言(Lookaround):在清洗极其复杂的文本时,建议开启 perl=TRUE,从而使用 PCRE 引擎支持的前向断言 (?=...) 和后向断言 (?<=...),实现不消耗字符的精准匹配。
  • POSIXct 与 POSIXlt 的本质差异POSIXct 底层存储的是自 1970 年以来的秒数(一个连续的数值向量),适合放在数据框中;而 POSIXlt 实际上是一个包含年、月、日、时、分、秒的列表(List),主要用于提取特定时间元素。在数据框中直接使用 POSIXlt 会导致结构异常。
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

R语言字符串与日期处理
https://blog.sopak.space/posts/study/economics-management/ms-rfp/2/
作者
Xxxhite
发布于
2026-06-29
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录