R 是否从另一列中的值替换(gsub)列中的所有行?
假设我有一个这样的数据帧R 是否从另一列中的值替换(gsub)列中的所有行?,r,R,假设我有一个这样的数据帧 df = data.frame ( a = c(1,14,15,11) , b= c("xxxchrxxx","xxxchryy","zzchrzz","aachraa") ) a b 1 1 xxxchrxxx 2 14 xxxchryy 3 15 zzchrzz 4 11 aachraa 我想用chrx替换b列中的chr,x派生自a列 a b 1 1 xxxchr1xxx 2 14 xxxchr
df = data.frame ( a = c(1,14,15,11) , b= c("xxxchrxxx","xxxchryy","zzchrzz","aachraa") )
a b
1 1 xxxchrxxx
2 14 xxxchryy
3 15 zzchrzz
4 11 aachraa
我想用chrx替换b列中的chr,x派生自a列
a b
1 1 xxxchr1xxx
2 14 xxxchr14yy
3 15 zzchr15zz
4 11 aachr11aa
但是我不能让gsub工作,因为它需要一个元素
df$b = gsub ( "chr",paste0("chr",df$a), df$b)
有办法吗 df=数据。帧a=c1,14,15,11,b=cchr,chr,chr,chr
df$b a b
>1 1 chr1
>2 14 chr14
>3 15 chr15
>4.11.11
于2019-02-22由v0.2.1创建,df=data.frame a=c1,14,15,11,b=cchr,chr,chr,chr
df$b a b
>1 1 chr1
>2 14 chr14
>3 15 chr15
>4.11.11
于2019年2月22日由v0.2.1版编辑::使用stringr创建:
继续使用paste0:
编辑::使用stringr:
继续使用paste0:
原因是gsub替换只接受长度为1的向量。根据?gsub
替换-如果提供长度为2或更长的字符向量,则第一个元素将与警告一起使用
如果需要矢量化替换,请使用str_replace
根据示例,它只是一个简单的粘贴
原因是gsub替换只接受长度为1的向量。根据?gsub
替换-如果提供长度为2或更长的字符向量,则第一个元素将与警告一起使用
如果需要矢量化替换,请使用str_replace
根据示例,它只是一个简单的粘贴
也可以使用粘贴df$b:df$b对不起,我应该让我的示例更好,但问题是我需要使用gsub,因为b中的字符串可能很复杂,比如aaa.chr.xxx,所以需要明确地替换它?我会编辑我的问题,也可以使用粘贴df$b:df$b对不起,我应该让我的示例更好,但问题是我需要使用gsub,因为b中的字符串可能很复杂,比如aaa.chr.xxx,所以需要明确地替换它?我将编辑我的问题
stringr::str_replace_all(df$b,"chr",paste0("chr",df$a))
df$b<-paste0(df$b,df$a)
a b
1 1 chr1
2 14 chr14
3 15 chr15
4 11 chr11
library(stringr)
str_replace(df$b, "chr", paste0("chr", df$a))
#[1] "xxxchr1xxx" "xxxchr14yy" "zzchr15zz" "aachr11aa"
df$b <- with(df, paste0(b, a))