R 字符串操作超全总结
- paste函数和paste0()函数 连接字符
> paste("a", 1:3) #默认空格符连接,即sep=" "
[1] "a 1" "a 2" "a 3"
> paste("a",1:3, sep = "") #a自动与每个元素连接
[1] "a1" "a2" "a3"
> paste("a",1:4,".csv", sep = "") #批量输出文件名
[1] "a1.csv" "a2.csv" "a3.csv" "a4.csv"
> #sep连接的是元素间的扩展,collapse是一种元素间的折叠坍缩
> paste("a", 1:3, sep = "", collapse = "+")
[1] "a1+a2+a3"
> paste(c("a","b"), 1:5, sep = "") #超出范围后继续从前向后连接
[1] "a1" "b2" "a3" "b4" "a5"
> paste0(c("a","b"), 1:5) #默认不加空格sep=""连接,这是与paste()函数的唯一不同
[1] "a1" "b2" "a3" "b4" "a5"
#下列命令可将barcode列的字符后都加上“-1”
predict_result$barcode <- paste(predict_result$barcode,"-1", sep = "")
- substr/substring 提取或替换字符串向量中的字符
substr(x, start, stop)
substring(text, first, last = 1000000L)
substr(x, start, stop) <- value
substring(text, first, last = 1000000L) <- value
注:x/text:字符向量;start/first:整数,要替换的第一个元素;stop/last:要替换的最后一个元素;value:字符向量
> substr(rep("abcdef", 4), 1:4, 4:5)
[1] "abcd" "bcde" "cd" "de"
> x <- c("asfef", "qwerty", "yuiop[", "b", "stuff.blah.yech")
> substr(x, 2, 5)
[1] "sfef" "wert" "uiop" "" "tuff"
> substring(x, 2, 4:6)
[1] "sfe" "wert" "uiop[" "" "tuff"
> substr(x, 1, 3) <- c("aaa", "bcd", "s","ee")#替换
> x
[1] "aaaef" "bcdrty" "suiop[" "e"
[5] "aaaff.blah.yech"
- nchar(x) 计算字符串长度
> x <- c("asfef", "qwerty", "yuiop[", "b", "stuff.blah.yech")
> nchar(x) #计算字符串长度
[1] 5 6 6 1 15
- chartr()转化字符串向量中的字符串
> a <- c("aBcdEf","1234","AbwSxT")
> chartr("abS","WHY",a) #注意在转换的过程中区分大小写
[1] "WBcdEf" "1234" "AHwYxT"
- tolower(x)和toupper(x) 字符串大小写转换函数
> a <- c("aBcdEf","1234","AbwSxT")
> tolower(a) #将大写字母转换成小写
[1] "abcdef" "1234" "abwsxt"
> toupper(a) #将小写字母转换成大写
[1] "ABCDEF" "1234" "ABWSXT"
> casefold(a, upper = FALSE)
[1] "abcdef" "1234" "abwsxt"
> casefold(a, upper = TRUE)
[1] "ABCDEF" "1234" "ABWSXT"
- stringr包
按照特定的字符拆分字符串:str_split
str_split(string, pattern, n = Inf, simplify = FALSE)
str_split_fixed(string, pattern, n)
str_locate() 返回首个匹配模式的字符的位置
str_locate_all() 返回所有匹配模式的字符的位置
> library(stringr)
> hw <- "IGHV3-30*18, IGHV3-30-5*01"
> a <- str_split(hw, ",")#默认输出结果是一个列表
> class(a)
[1] "list"
> b <- str_split(hw, ",", simplify = TRUE) #当参数simplify=T时,输出结果是矩阵
> b
[,1] [,2]
[1,] "IGHV3-30*18" " IGHV3-30-5*01"
> ##提取字符串中的特定字符
> c <- str_sub(b[,1],1, str_locate(b[,1], "\\*")[1]-1)
> c
[1] "IGHV3-30"
> #"."表示除了换行符以外的任一字符。将1.2以“.”分割开需要用到[.]
> d <- c("bcfe","12.333")
> str_split(d, "[.]", simplify = TRUE)
[,1] [,2]
[1,] "bcfe" ""
[2,] "12" "333"
R 字符串操作超全总结的更多相关文章
- 一句python,一句R︱python中的字符串操作、中文乱码
先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句python,对应写一句R. pandas可谓如雷贯耳,数据处理神器. 以下符号: = ...
- 【Redis】命令学习笔记——字符串(String)(23个超全字典版)
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). 本篇基于redis 4.0.11版本,学习字符串( ...
- 一句python,一句R︱python中的字符串操作、中文乱码、NaN情况
一句python,一句R︱python中的字符串操作.中文乱码.NaN情况 先学了R,最近刚刚上手Python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句pytho ...
- s14 第5天 时间模块 随机模块 String模块 shutil模块(文件操作) 文件压缩(zipfile和tarfile)shelve模块 XML模块 ConfigParser配置文件操作模块 hashlib散列模块 Subprocess模块(调用shell) logging模块 正则表达式模块 r字符串和转译
时间模块 time datatime time.clock(2.7) time.process_time(3.3) 测量处理器运算时间,不包括sleep时间 time.altzone 返回与UTC时间 ...
- R学习笔记 第五篇:字符串操作
文本数据存储在字符向量中,字符向量的每个元素都是字符串,而非单独的字符.在R中,可以使用双引号,或单引号表示字符,函数nchar用于获得字符串中的字符数量: > s='read' > nc ...
- R语言学习 第五篇:字符串操作
文本数据存储在字符向量中,字符向量的每个元素都是字符串,而非单独的字符.在R中,可以使用双引号,或单引号表示字符. 一,字符串中的字符数量 函数nchar()用于获得字符串中的字符数量: > s ...
- C语言字符串操作总结大全(超详细)
本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat( ...
- C语言学习笔记 (008) - C语言字符串操作总结大全(超详细)(转)
1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...
- C语言字符串操作总结大全(超具体)
1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...
- C语言字符串操作总结大全(超详细)【转】
转自:http://www.jb51.net/article/37410.htm )字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strc ...
随机推荐
- JS数组的交集与差集
有两个数组arr1,arr2 实现arr2中去除arr1相同的元素 e.g arr1=[1,2,3] arr2=[2,3,4] ===> result = [4] 实现 获取两个数组(arr1, ...
- C/C++ FILE 和 fstream 用法详解
FILE 是C语言自带的文件操作结构体, fstream 是C++的文件操作类,两者使用都比较常见,且用法比较类似,再次记录. 功能 FILE fstream 打开文件 FILE* fopen(cha ...
- vue 在 v-for 时给每项元素绑定事件需要用事件代理吗?为什么?
vue本身不做事件代理(react将所有事件都委托到document上,然后进行派发) 普通html元素和在组件上挂了.native修饰符的事件.最终EventTarget.addEventListe ...
- 可视化 之D3 与echarts 对比以及应用场景
可视化:我们想要看出一组数据的大小关系,单看数据显然不够直观.那么我们可以将它转换为一种简单易懂的图表的形式,就可以更加直观的获取数据所传递给我们的信息.这个过程就叫做数据可视化.可视化常用2个前端库 ...
- Kubernetes--管理Pod对象的容器(2)
自定义运行的容器化应用 由Docker镜像启动容器时运行的应用程序在相应的Dockerfile中由ENTRYPOINT指令进行定义,传递给程序的参数则通过CMD指令指定,ENTRYPOINT指令不存在 ...
- java8中CompletableFuture异步处理超时
java8中CompletableFuture异步处理超时的方法 Java 8 的 CompletableFuture 并没有 timeout 机制,虽然可以在 get 的时候指定 timeout,但 ...
- Object.assign合并多个对象
语法: Object.assign(target, ...sources) target, 目标对象 sources, 源对象 assign函数用来合并多个对象. 该方法会修改第一个对象,函数在最后r ...
- continue的使用
continue是终止本次循环,进行下一个循环如果要跳到最开始的循环abc : for(){ for(){ for(){ continue abc; } }}
- 如何保证RabbitMQ不会被重复消费?
为什么会有重复消费? 做一个标志! 在将生产者写消息的时候,对数据做一个唯一标识.消费者在消费消息时,根据这个唯一标识做判断,如果这个唯一标识被消费过了,那么就 不消费了,如果判断结果是没有被消费过, ...
- vue 封装时间格式化和number精确度
//format.js 公用js /** * Parse the time to string * @param {(Object|string|number)} time * @param {str ...