从r中的其他向量自动生成变量列表
我有一个107个dna序列(列)的矩阵,每个10个碱基长(行)。我还有一个称为nSamples的种群频率向量,还有一个称为dnapop的种群名称向量。我想自动创建一个嵌套列表,分别包含前27个序列作为dna1,下27个序列作为dna2,下17个序列作为dna3……等等,直到所有107个序列都在列表中各自的总体中。 这需要是动态的,因为种群数量和dna序列随着应用的不同而变化: $dna1 $dna1$'1' [1] “g”“t”“g”“a”“t”“t”“c”“c”“g”“g” $dna1$'2' [1] “g”“t”“g”“a”“t”“t”“c”“c”“g”“g” 等等,直到 $dna1$'27' [1] “g”“t”“g”“a”“t”“t”“c”“c”“g”“g” 然后转到dna2,列出其27个序列,然后是dna3,列出其17个序列从r中的其他向量自动生成变量列表,r,list,vector,R,List,Vector,我有一个107个dna序列(列)的矩阵,每个10个碱基长(行)。我还有一个称为nSamples的种群频率向量,还有一个称为dnapop的种群名称向量。我想自动创建一个嵌套列表,分别包含前27个序列作为dna1,下27个序列作为dna2,下17个序列作为dna3……等等,直到所有107个序列都在列表中各自的总体中。 这需要是动态的,因为种群数量和dna序列随着应用的不同而变化: $dna1 $dna1$'1' [1] “g”“t”“g”“a”“t”“t”“c”“c”“g”“g” $dna1$'2'
dna <- matrix(data=sample(c("a","g","c","t"),1070,replace=T),nrow=10,ncol=107)
nSamples <- c(27,27,17,12,1,10,3,1,6,3)
dnapops <- c("dna1","dna2","dna3","dna4","dna5","dna6","dna7","dna8","dna9","dna10")
dna我们可以用“nSamples”复制“nSamples”序列,并split
使用该序列,根据序列索引提取列,然后通过col
进行split
lst <- lapply(split(seq_len(ncol(dna)),rep(seq_along(nSamples), nSamples)),
function(i) {x1 <- dna[,i, drop=FALSE]
split(x1, col(x1)) })
lengths(lst)
# 1 2 3 4 5 6 7 8 9 10
#27 27 17 12 1 10 3 1 6 3
lst[[1]][1:5]
#$`1`
#[1] "g" "a" "c" "c" "c" "t" "g" "t" "t" "g"
#$`2`
#[1] "c" "g" "c" "c" "g" "t" "a" "a" "c" "a"
#$`3`
#[1] "a" "c" "c" "a" "a" "c" "a" "c" "c" "a"
#$`4`
#[1] "g" "a" "g" "a" "t" "a" "c" "c" "c" "t"
#$`5`
#[1] "g" "g" "g" "a" "a" "a" "g" "g" "g" "g"
lst我们可以用“nSamples”复制“nSamples”序列,并split
使用该序列,根据序列索引提取列,然后通过col
进行split
lst <- lapply(split(seq_len(ncol(dna)),rep(seq_along(nSamples), nSamples)),
function(i) {x1 <- dna[,i, drop=FALSE]
split(x1, col(x1)) })
lengths(lst)
# 1 2 3 4 5 6 7 8 9 10
#27 27 17 12 1 10 3 1 6 3
lst[[1]][1:5]
#$`1`
#[1] "g" "a" "c" "c" "c" "t" "g" "t" "t" "g"
#$`2`
#[1] "c" "g" "c" "c" "g" "t" "a" "a" "c" "a"
#$`3`
#[1] "a" "c" "c" "a" "a" "c" "a" "c" "c" "a"
#$`4`
#[1] "g" "a" "g" "a" "t" "a" "c" "c" "c" "t"
#$`5`
#[1] "g" "g" "g" "a" "a" "a" "g" "g" "g" "g"
lst几乎可以工作,只是现在dna序列被合并到列表的每个部分。如何改变它,使之成为每个dna样本的列表?i、 e.dna1有27个独立的DNA,dna2有27个独立的DNA。。。。谢谢代码似乎不起作用。碱基的顺序不确定conserved@user3651829我更新了帖子,请检查这是否是你想要的wanted@user3651829您的原始矩阵dna
基于sample
,您还没有设定任何种子。基本上,您为重复27次而显示的输出并不清楚,因为“dna”中的前27列具有不同的值。@user3651829同样,这里我按列的顺序进行拆分,即“dna”中的前27列将是第一个列表元素(再次拆分为向量),第二个27列构成第二个列表
元素,依此类推。否则,重复序列就没有意义了。这几乎起作用了,只是现在dna序列被合并到了列表的每个部分。如何改变它,使之成为每个dna样本的列表?即dna1有27个单独的dna,dna2有27个单独的dna代码似乎不起作用。基的顺序不正确conserved@user3651829我更新了帖子,请检查这是否是你想要的wanted@user3651829您的原始矩阵dna
基于sample
,您没有设置任何种子。基本上,您为重复“g”“t”“g”“a”“t”“t”“c”而显示的输出“c”“g”“g”
27次不清楚,因为“dna”中的前27列具有不同的值。@user3651829同样,这里我按列的顺序进行拆分,即“dna”中的前27列将是第一个列表
元素(再次拆分为向量),第二个27列构成第二个列表
元素,依此类推。否则,重复序列就没有意义了。