>source

데이터 프레임이 있다고 가정합니다.

  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

내가 원하는 것은 b 열의 chr을 chrx로 바꾸는 것입니다 .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)

어떻게 할 수 있습니까?


  • 답변 # 1

    그 이유는 gsub  와이즈 비즈  길이가 1 인 벡터 만 취합니다. replacement 에 따르면

    와이즈 비즈

    벡터화 된 교체가 필요한 경우 ?gsub 를 사용하십시오.

    replacement - if a character vector of length 2 or more is supplied, the first element is used with a warning.

    <시간>

    예제에 따르면 간단한 str_replace 입니다.

    library(stringr)
    str_replace(df$b, "chr", paste0("chr", df$a))
    #[1] "xxxchr1xxx" "xxxchr14yy" "zzchr15zz"  "aachr11aa"
    
    

  • 답변 # 2

    편집 :: paste 사용 :

    df$b <- with(df, paste0(b, a))
    
    
    stringr 로 계속 :

    stringr::str_replace_all(df$b,"chr",paste0("chr",df$a))
    
    

  • 답변 # 3

    paste0
    
    

    2019-02-22에 reprex 패키지 (v0.2.1)에서 생성

    df$b<-paste0(df$b,df$a) a b 1 1 chr1 2 14 chr14 3 15 chr15 4 11 chr11

관련 자료

  • 이전 Count ()를 사용하지 않는 SQL 수 행
  • 다음 python - 메타 클래스 충돌없이 PyQt 서브 클래스에 일반 타이핑을 사용하려면 어떻게해야합니까?