r - 将 az 扩展为 abc...xyz 形式 R 的方法
问题描述
嗨:) 我想做的是编写一个简单的程序来从最短的条目扩展
例如
阿兹
最长写
例如
abcdefghijklmnouprstwxyz
关于如何在 R 中实现它的任何想法?谢谢
解决方案
我们可以做
paste(letters[do.call(`:`, as.list(match( strsplit(str1, "-")[[1]],
letters)))], collapse="")
[1] "abcdefghijklmnopqrstuvwxyz"
以上可以包装在一个函数中
f1 <- function(string1) {
paste(letters[do.call(`:`, as.list(match( strsplit(string1, "-")[[1]],
letters)))], collapse="")
}
使用新数据
i1 <- grep('-', df$letters)
df$letters[i1] <- sapply(df$letters[i1], f1)
df$letters
[1] "abc" "bcd" "cd" "abcd" "ab" "cd"
或使用regex
paste(grep(sprintf('[%s]', str1), letters, value = TRUE), collapse="")
基于新数据集
library(dplyr)
library(tidyr)
library(stringr)
df %>%
separate(letters, into = c('start', 'end'),
sep="(?<=[a-z])-?(?=[a-z])") %>%
transmute(new = map2_chr(match(start, letters),
match(end, letters), ~ str_c(letters[.x:.y], collapse="")))
-输出
new
1 abc
2 bcd
3 cd
4 abcd
5 ab
6 cd
数据
str1 <- "a-z"
df<-data.frame(letters=c("a-c","b-d","c-d","a-d", "ab", "cd"))
推荐阅读
- c# - 如何将 System::^array 从 C# 函数转换为 C++ 中的等效数据类型
- java - 升级到 Hibernate 5 和配置 EhCache 不起作用。JCache 现在?
- mysql - MySQL 8 - 计算年度指标
- html - 需要帮助在 Hugo 页面中插入图片?
- c - 更新指针值是否会影响早期的分配
- codeigniter - Codeigniter 选择、计数和显示二维数组
- c# - CPU、内存使用、线程池使用 - ASP NET 核心身份未确认邮件用户删除处理 - 在应用程序或单独的应用程序?
- bash - 如何解决使用 wget 从 unix 服务器向仪表板发送 JSON 数据时产生的错误
- javascript - 如何排列具有固定列数的 Angular 表单字段?
- css - 使用 CSS 掩码仅屏蔽元素的一部分