replace多个替换_R语言中实现文本替换其实很简单,记住do Replace就好~文末有彩蛋...

本文介绍R语言中的Replace和Replace0函数,用于更灵活地进行文本替换。Replace支持多种数据类型,包括数字、字符串、向量、数据框和矩阵,提供多种替换模式。Replace0专注于移除特定内容。同时,这两个函数均支持正则表达式,方便处理复杂替换需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      我们经常用到替换,最常用的命令是sub或者gsub,这两个命令相当强大,但是也有缺点,比如每次只能操作1个替换对象,如果需要批量替换,则需要替换很多次,而且不能作用于数据框和矩阵。

      基于此,我重新封装了gsub命令,写了Replace和Replace0两个命令,来更加灵活地替换,并将这两个命令放入do包(data operator)。

      该命令有2大优势:

      优势1:适用于多种数据类型,包括:数字、字符串、向量、数据框、矩阵,不适合于列表和数组。

      优势2:3种替换模式。

模式1、多个替换为1个,比如讲a、b、c都替换为d

模式2、单个替换为单个,比如同时实现a替换b,c替换为d,3替换为4

模式3、以上2种模式同时使用:注意,优先处理模式1,然后再处理模式2.

首先安装do包:

install.packages("do")

调用do包

library(do)

1、数字替换

①多个替换为1个:如将3个数字145,124,154种的1替换都为6

Replace(data=c(145,124,154),from=1,to=6)输出的结果[1] "645" "624" "654"

上面的命令中,data是我们处理的数据,from是替换的对象,to是替换成的目标。

②单个替换为单个:还是上面的数据,把1替换为6,5替换为7

replace(data=c(145,124,154),pattern=c("1:6","5:7"))输出的结果[1] "647" "624" "674"

上面的命令中,data是我们处理的数据,pattern即是单个替换单个模式,每一个替换模式都要用引号引起来,第一个替换是1替换成6,冒号前面是from,冒号后面是to,所以 "1:6" 就是1替换为6,"5:7" 就是5替换为7。

③两种模式同时:优先处理模式1,后处理模式2.

将3个数字1234,1567,8746,将1和2替换为9;3替换为8,6替换为0

replace(data=c(1234,1567,8746),        from=c(1,2),to=9,        pattern=c("3:8","6:0"))输出的结果:[1] "9984" "9507" "8740"

2、字符串替换

和数字替换完全类似,举一个模式3的例子

将monday、tuesday、thursday中的a和y替换为ok;s替换为h,d替换为e

Replace(data=c("monday","tuesday","thursday"),        from=c("a","y"),to="ok",        pattern=c("s:h","d:e"))输出的结果:[1] "moneokok"   "tueheokok"  "thurheokok"

3、数据框和矩阵※※※

数据框和矩阵的操作完全一样,当对数据框和矩阵操作的时候,更能显示Replace的优势,比如,我们有一个数据框df

df   var1 var2 var3   123  abc 1a2b   125  bcd  4b6   653  jhg  j4h

现在我们来展示模式3.

我们想去掉数据中的1和a;

将5替换为7,将a替换为z,将b替换为k,将h替换为e

Replace(data = df,        from = c("1","a"),to = "",        pattern = c("5:7","a:z","h:e"))输出的结果:  var1 var2 var3   23   bc   2b   27  bcd  4b6  673  jeg  j4e

如果想把谁去掉,那就把to赋值空字符串"",就可以了。

4、Replace0

很多时候,我们需要把某些内容去掉,所以,为了方便,我写了Replace0,最后是零(0),不是英文字母欧(O),Replace0中只有data和from,没有to,也没有pattern,因为它的目的就是去掉。

比如,我们去掉df数据框中的a、b和1

Replace0(data = df,from = c("a","b","1"))输出的结果:  var1 var2 var3   23    c    2   25   cd   46  653  jhg  j4h

5、正则表达式※※※

Replace是封装了gsub命令,所以理所当然支持正则表达式。

我们要去掉df中的0到4的数字,和a到e的字母

Replace0(data = df,from = c("[0-4]","[a-e]"))输出的结果:  var1 var2 var3                   5         6   65  jhg   jh

总结:Replace命令通过from和to实现多替换为1的功能,通过pattern实现多次1对1的替换,两者结合使用,可以非常方便。Replace0命令实现同时去掉多个对象的功能。Replace和Replace0都支持正则表达式,这一点非常重要。


彩蛋

站长收集了除了CxT公司的信号通路以及R语言学习卡片的高清pdf文件

b8bf9d7b48b360da2cf5b5184782e595.png

比如:

表观遗传学

35314d6a041026afaaa21b42ff84e7fc.png

bb481bbb3aad1097df8b29dcd0b9fef5.png

肿瘤免疫

ad66e59254ca8bf7699e74ab3d36b58a.png

上皮间质转化EMT

163fbfbf1f935d1861c772a42c0e89ee.png

f22a404ef113e15d951b412025d1c2a9.png

RNA甲基化

962ec317c0ef02ebc6706b0a6290cd36.png

细胞死亡

6e5e985ea40f0c76f256ce0d9f8f84a5.png

388c89ea3899674fd138b48a7b7fb309.png

R语言学习卡片

237edef2200e2242c1f88e966b71bfb7.png

7db24ebdd35590feb40169caef9a1f07.png

b199f7362568025de6430da047fe7a2b.png

b5eafc3add15b1abff939596cdb79522.png

等等......


获得方式

1、分享此文到朋友圈24小时无删除或者分享此文到3个微信群(人数>300)

2、截图直接在微信公众号内回复即可。。

资料收集不易,用2000行代码写的网站工具更不易,为了宣传一个免费又强大的网站工具,麻烦大家了~


One More Thing......

小站粉丝VIP群

为了更好的与粉丝交流,站长组建了VIP群,加入都是随缘热心肠的小伙伴。除了答疑之外,大神还经常讨论一些热门话题,课题、文章、国自然、生信、八卦,站长有什么新的想法和关于小站工具处于开发阶段的功能也会提前放到群里。

此群采用59元会员制,群里还有名额,如果大家感兴趣可以加站长微信,发59元红包,站长拉你入群。

入群可以获得

1、2019年生命科学部

2、2019年医学部所有中标名单

3、2017年肿瘤口中标项目摘要

4、RCheatsheets学习卡片和其他资料

e32df8c8759b2fce4539da17defd4ac4.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值