r - R中矩阵中的字符串操作
问题描述
我有一个这样的矩阵
A = matrix(
c("2 (1-3)", "4 (2-6)", "3 (2-4)", "1 (0.5-1.5)", "5 (2.5-7.5)", "7 (5-9)"),
nrow=3,
ncol=2)
我想用“< 5”替换第一个元素小于5(即“0”或“1”或“2”或“3”或“4”)的所有字符串。它应该是:
B = matrix(
c("< 5", "< 5", "< 5", "< 5", "5 (2.5-7.5)", "7 (5-9)"),
nrow=3,
ncol=2)
有任何想法吗?
解决方案
提取第一个数字,将其转换为数字并将小于 5 的数字替换为"<5"
.
A[as.numeric(sub('(\\d+).*', '\\1', A)) < 5] <- '< 5'
A
# [,1] [,2]
#[1,] "< 5" "< 5"
#[2,] "< 5" "5 (2.5-7.5)"
#[3,] "< 5" "7 (5-9)"
提取第一个数字并将其转换为数字的快捷方式是使用readr::parse_number
.
A[readr::parse_number(A) < 5] <- '< 5'
推荐阅读
- jmeter - 如何在 JMeter 中编写一个函数,该函数包含或可用于生成随机使用毫秒的时间函数
- python - 如何将列表中的元素合并到 Python 3 中的另一个列表中?
- java - 为什么今天有人会使用 Java 命令行选项 -Xrs?
- css - CSS伪元素的动画不起作用
- .htaccess - 如何重定向网址
- ruby-on-rails-5 - 如何使用自定义版本表而不是版本表?
- spring-boot - 故障转移附加程序不适用于 log4j2 版本 2.7
- android - Pjsip 2.7 为目标“../bin/pjmedia-test-arm-unknown-linux-androideabi”的配方构建目标 arm64-v8a 错误失败
- database - 为什么我们连接数据库时必须选择数据库?
- gantt-chart - 如何打印 AnyGantt 中的所有任务