【问题标题】:stringsplit output as new colnames字符串拆分输出为新的列名
【发布时间】:2016-03-16 07:45:55
【问题描述】:

我想为我的数据框 MirAligner 创建新的 colnames,由原始 colnames 中第一个 _ 之前的部分组成。这是我尝试过的:

unlist(strsplit(as.character(colnames(MirAligner)),'_',fixed=TRUE))

列名

head(colnames(MirAligner))
[1] "na-008_S52_L003_R1_001.mir.fa.gz"  "na-014_S99_L005_R1_001.mir.fa.gz" "na015_S114_L005_R1_001.mir.fa.gz" [4] "na-015_S50_L003_R1_001.mir.fa.gz"  "na-018_S147_L007_R1_001.mir.fa.gz" "na020_S162_L007_R1_001.mir.fa.gz"

预期输出:

na-008 na-014 na015

【问题讨论】:

  • 请包含预期的输出。

标签: r


【解决方案1】:

我们可以使用sub

sub('_.*', '', str1)
#[1] "na-014" "na015"  "na-015" "na-018" "na020" 

数据

str1 <- c("na-014_S99_L005_R1_001.mir.fa.gz", 
          "na015_S114_L005_R1_001.mir.fa.gz", 
          "na-015_S50_L003_R1_001.mir.fa.gz",  
          "na-018_S147_L007_R1_001.mir.fa.gz", 
          "na020_S162_L007_R1_001.mir.fa.gz")

【讨论】:

    【解决方案2】:
    gsub("^(.*?)_.*", "\\1", try5)
    #[1] "na-008" "na-014" "na015" 
    

    【讨论】:

      【解决方案3】:

      在sapply中使用strsplit:

      #myColNames <- colnames(MirAligner)
      myColNames <- c("na-008_S52_L003_R1_001.mir.fa.gz", "na-014_S99_L005_R1_001.mir.fa.gz")
      
      sapply(strsplit(myColNames, "_", fixed = TRUE), "[[", 1)
      #output
      # [1] "na-008" "na-014"
      

      或者使用read.table:

      read.table(text = myColNames, sep = "_", stringsAsFactors = FALSE)[, "V1"]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-01
        • 2017-02-26
        • 1970-01-01
        • 1970-01-01
        • 2019-04-16
        相关资源
        最近更新 更多