【问题标题】:How can I give sequential names to items in a list?如何为列表中的项目提供顺序名称?
【发布时间】:2020-10-08 05:04:19
【问题描述】:

我有一个字符串,我使用 strsplit 将其拆分为一个较小的字符串列表。例如:

> full.seq <- "FZpcgK3VdAQzEFZpcAVdV8QM8ZpsEFZpacgGKi3VdVSQzEFZpcgGKAVdVRpEFKGIZpg13"
> full.seq
[1] "FZpcgK3VdAQzEFZpcAVdV8QM8ZpsEFZpacgGKi3VdVSQzEFZpcgGKAVdVRpEFKGIZpg13"
> sequences <- strsplit(full.seq, "cg")
> sequences
[[1]]
[1] "FZp"                          "K3VdAQzEFZpcAVdV8QM8ZpsEFZpa" "GKi3VdVSQzEFZp"              
[4] "GKAVdVRpEFKGIZpg13"  

我想为这些新字符串中的每一个赋予一个唯一的、连续的名称,我仍然可以使用该名称来识别它们来自同一个原始字符串(我将在以后对这些字符串进行分析)。例如,“ID.seq1”、“ID.seq2”、“ID.seq3”等。我尝试手动执行此操作,但收到此错误:

> names(sequences) <- c("ID.seq1", "ID.seq2", "ID.seq3", "ID.seq4")
Error in names(sequences) <- c("ID.seq1", "ID.seq2", "ID.seq3", "ID.seq4") : 
  'names' attribute [4] must be the same length as the vector [1]

不过,我还想要一种自动执行此操作的方法,因为我需要从多个原始字符串中标记多达 30 个新字符串。有什么建议吗?

【问题讨论】:

    标签: r string list strsplit


    【解决方案1】:

    首先,如果您想要一个字符向量,则必须对列表进行子集化,因为strsplit 返回一个列表。完成此操作后,您可以轻松地为该术语向量分配名称。

    full.seq <- "FZpcgK3VdAQzEFZpcAVdV8QM8ZpsEFZpacgGKi3VdVSQzEFZpcgGKAVdVRpEFKGIZpg13"
    sequences <- strsplit(full.seq, "cg")[[1]]
    names(sequences) <- paste0("ID.seq", c(1:4))
    sequences
    
             ID.seq1                        ID.seq2 
               "FZp" "K3VdAQzEFZpcAVdV8QM8ZpsEFZpa" 
             ID.seq3                        ID.seq4 
    "GKi3VdVSQzEFZp"           "GKAVdVRpEFKGIZpg13" 
    

    【讨论】:

      【解决方案2】:

      蒂姆的回答是完美的。如果您想保留每个项目的列表和名称元素,我只想添加:

      full.seq <- "FZpcgK3VdAQzEFZpcAVdV8QM8ZpsEFZpacgGKi3VdVSQzEFZpcgGKAVdVRpEFKGIZpg13"
      full.seq
      sequences <- strsplit(full.seq, "cg")
      names(sequences[[1]]) <- paste("ID.seq",1:4,sep="") 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-09
        • 2023-01-16
        • 1970-01-01
        • 2017-01-13
        • 1970-01-01
        相关资源
        最近更新 更多