在列表中的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