Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在r中提取字符串_R - Fatal编程技术网

如何在r中提取字符串

如何在r中提取字符串,r,R,我想提取一些序列数据中每个分类群的科级和ID。下游分析需要picante和phyloseq软件包,但此问题不需要。在下面的示例中,我想: 将V1从“00000000 1 |大小:678798”和“00000000 9 |大小:1497”减少到“1”和“9” 将“内生孢子虫科”和“聚球虫科”提取到一个新的柱中 a这是你想要的吗 strplit strsplit(as.character(a$V1), "\\|") 格雷普 a$Bacteria <- NA a$Bacteria[gre

我想提取一些序列数据中每个分类群的科级和ID。下游分析需要picante和phyloseq软件包,但此问题不需要。在下面的示例中,我想:

  • 将V1从“00000000 1 |大小:678798”和“00000000 9 |大小:1497”减少到“1”和“9”
  • 将“内生孢子虫科”和“聚球虫科”提取到一个新的柱中

  • a这是你想要的吗

  • strplit

      strsplit(as.character(a$V1), "\\|")
    
  • 格雷普

    a$Bacteria <- NA
    a$Bacteria[grep("Endozoicimonaceae", a$V2)] <- "Endozoicimonaceae"
    a$Bacteria[grep("Synechococcaceae", a$V2)] <- "Synechococcaceae"
    

    a$Bacteria我们可以使用
    parse_number
    从'V1'中提取第一个数值,
    str_extract
    从'V2'中提取特定的子字符串/单词,或者如果它是从模式中提取的,即指定regex lookaround来搜索在
    f_u
    之后成功的单词(
    \\w+

    library(stringr)
    library(dplyr)
    a %>%
       mutate(V1 = readr::parse_number(as.character(V1)),
              new = str_extract(V2, "(?<=f__)\\w+"))
    # V1
    #1  1
    #2  9
                                                                                                                                 #V2
    #1            k__Bacteria; p__Proteobacteria; c__Gammaproteobacteria; \n    o__Oceanospirillales; f__Endozoicimonaceae; g__; s__
    #2 k__Bacteria; p__Cyanobacteria; c__Synechococcophycideae; \n    o__Synechococcales; f__Synechococcaceae; g__Synechococcus; s__
    #  V3 V4               new
    #1  1  3 Endozoicimonaceae
    #2  1  3  Synechococcaceae
    
    库(stringr)
    图书馆(dplyr)
    a%>%
    mutate(V1=readr::parse_number(as.character(V1)),
    
    new=str_extract(V2),(?已编辑-问题是当我尝试对主数据框进行子集时。我认为这应该可以工作。从V1中提取工作-谢谢!V2的问题是,我的实际数据框是200行,因此手动提取将很困难。我想提取“f”之后的族级名称__“在V2Error中,表示替换和数据具有不同的行数?修复了问题-这非常有效。感谢您的帮助!我尝试了其他一些不起作用的方法,因此我在编辑的数据帧上运行了您的代码,而不是在我给出的示例中运行的代码。但我在正确的数据帧上运行了您的代码,这正是我所需要的。”。
    library(stringr)
    library(dplyr)
    a %>%
       mutate(V1 = readr::parse_number(as.character(V1)),
              new = str_extract(V2, "(?<=f__)\\w+"))
    # V1
    #1  1
    #2  9
                                                                                                                                 #V2
    #1            k__Bacteria; p__Proteobacteria; c__Gammaproteobacteria; \n    o__Oceanospirillales; f__Endozoicimonaceae; g__; s__
    #2 k__Bacteria; p__Cyanobacteria; c__Synechococcophycideae; \n    o__Synechococcales; f__Synechococcaceae; g__Synechococcus; s__
    #  V3 V4               new
    #1  1  3 Endozoicimonaceae
    #2  1  3  Synechococcaceae