在列表中的dataframe内动态插入数据

在列表中的dataframe内动态插入数据,r,R,我有一个问题如下 rept4<-"CGCCCCCTGCTGGCGACTAGGGCAACTGCAGGGTCCTCTTGCTCAAGGTGAGTGGCAGACGCCCACCTGCTGGCAGCCGGGGACACTGCAGGGCCCTCTTGCTTACTGTATAGTGGTGGCA" rept4<-unlist(strsplit(rept4,"")) i1 <- 5:15 lst <- lapply(i1, function(x) data.frame(setNames(r

我有一个问题如下

rept4<-"CGCCCCCTGCTGGCGACTAGGGCAACTGCAGGGTCCTCTTGCTCAAGGTGAGTGGCAGACGCCCACCTGCTGGCAGCCGGGGACACTGCAGGGCCCTCTTGCTTACTGTATAGTGGTGGCA"
rept4<-unlist(strsplit(rept4,""))
i1 <- 5:15
lst <- lapply(i1, function(x)  data.frame(setNames(replicate(x,character(0)), 
                           paste0("C", seq_len(x))), stringsAsFactors = FALSE))
names(lst) <- paste0("len", i1)

rept4解决问题的一个方法是将字符串解析为变量名,如本文所示:

使用您的代码,我完成了以下简化示例:

for (x in 5: 15){
  print(eval(parse(text = paste("lst$len",x,sep=''))))
}

简而言之,您可以使用:
eval(parse(text=paste(“lst$len”,x,sep=”)
如果任务是将
rept4
拆分为一个data.frames列表,我将分两步拆分并创建data.frames:(1)将字符串拆分为长度为
i1
的子字符串,(2)将子字符串转换为data.frames

rept4<-"CGCCCCCTGCTGGCGACTAGGGCAACTGCAGGGTCCTCTTGCTCAAGGTGAGTGGCAGACGCCCACCTGCTGGCAGCCGGGGACACTGCAGGGCCCTCTTGCTTACTGTATAGTGGTGGCA"
i1 <- 5:15
end <- cumsum(i1)
start <- end - i1 + 1L
lst <- lapply(stringr::str_sub(rept4, start, end), 
              function(x) 
                setNames(
                  as.data.frame(t(unlist(strsplit(x, ""))), 
                                stringsAsFactors = FALSE),
                paste0("C", seq_len(nchar(x))))
)
names(lst) <- paste0("len", i1)
lst

这看起来像一个。您能建议如何访问for循环中的数据帧列表吗?我的意思是说我可以访问lst$len10[I,j]。。。没关系,但是如何用lenx替换len10,这样我就可以从列表lst中的第x个数据中找到元素了?我得到了答案。。谢谢伙计你的最终结果是什么?
rept4<-"CGCCCCCTGCTGGCGACTAGGGCAACTGCAGGGTCCTCTTGCTCAAGGTGAGTGGCAGACGCCCACCTGCTGGCAGCCGGGGACACTGCAGGGCCCTCTTGCTTACTGTATAGTGGTGGCA"
i1 <- 5:15
end <- cumsum(i1)
start <- end - i1 + 1L
lst <- lapply(stringr::str_sub(rept4, start, end), 
              function(x) 
                setNames(
                  as.data.frame(t(unlist(strsplit(x, ""))), 
                                stringsAsFactors = FALSE),
                paste0("C", seq_len(nchar(x))))
)
names(lst) <- paste0("len", i1)
lst
$len5
  C1 C2 C3 C4 C5
1  C  G  C  C  C

$len6
  C1 C2 C3 C4 C5 C6
1  C  C  T  G  C  T

$len7
  C1 C2 C3 C4 C5 C6 C7
1  G  G  C  G  A  C  T

$len8
  C1 C2 C3 C4 C5 C6 C7 C8
1  A  G  G  G  C  A  A  C

$len9
  C1 C2 C3 C4 C5 C6 C7 C8 C9
1  T  G  C  A  G  G  G  T  C

$len10
  C1 C2 C3 C4 C5 C6 C7 C8 C9 C10
1  C  T  C  T  T  G  C  T  C   A

$len11
  C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11
1  A  G  G  T  G  A  G  T  G   G   C

$len12
  C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12
1  A  G  A  C  G  C  C  C  A   C   C   T

$len13
  C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13
1  G  C  T  G  G  C  A  G  C   C   G   G   G

$len14
  C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14
1  G  A  C  A  C  T  G  C  A   G   G   G   C   C

$len15
  C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15
1  C  T  C  T  T  G  C  T  T   A   C   T   G   T   A