如何为列表中的项目指定顺序名称?

How can I give sequential names to items in a list?

我有一个字符串,我已使用 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 个新字符串。有什么建议吗?

首先,如果您想要一个字符向量,则必须对列表进行子集化,因为 strsplit returns 一个列表。这样做之后,您可以轻松地为该术语向量指定名称。

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" 

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

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