我有一个向量,说f1
。为变量no分割一个向量。的时间成嵌套向量
f1 = c(1, 0, 0, 1, 0, 1, 1, 1, 0, 1, -6)
我想根据1在原始列表中的位置将此向量拆分为列表的嵌套列表,如下所示。对于相同的将R代码如下:
dfg <- function(f1) {
df<-which(f1 %in% 1)
m<-c()
for(i in 1:df[2]-1) {
m<-c(m,list(f1[i]))
}
m<-c(m,list(f1[df[2]:length(f1)]))
return(m)
}
这使输出如下:
[[1]]
numeric(0)
[[2]]
[1] 1
[[3]]
[1] 0
[[4]]
[1] 0
[[5]]
[1] 1 0 1 1 1 0 1 -6
到目前为止好。现在注意m [[5]]已经长> 1.
我想在输出嵌套的每一个层次上重复上述这个程序,直到每一个元素的长度为1
如何保证上面列出的R函数被执行用于任意级别的嵌套?
编辑:按照评论中的要求,我给整个事情想要的最终结果如下。
[[1]]数字(0)
[[2] [1] 1
[[3] [1] 0
[[4]] [1] 0
[[5]]
[[5]] [[1]]数字(0)
[[5]] [[2- ] [1] 1
[[5]] [[3] [1] 0
[[5]] [[4]]
[[5]] - [[4 ] [[1]]数字(0)
[[5]] [[4]] [[2]] [1] 1
[[5]] [[4]] [[ 3]]
[[5]] [[4]] [[3]] [[1]]数字(0)
[[5]] [[4]] [[ 3]] [[2]] [1] 1
[[5]] [[4]] [[3]] [[3]]
[[5]] [[4]] [[3]] [[3]] [[1]]数字(0)
[[5]] [[4]] [[3]] [[3]] [[2]] [1 ] 1
[[5]] [[4]] [[3]] [[3]] [[3] [1] 0
[[5]] [[4]] [ (我知道最后一个元素有长度)[3] [[3]] [[4]] [1] 1 -6
2,而不是1.但这对我来说不是问题。我将在函数dfg中对其进行排序。)
我只有一个问题。为什么? –
因为我在其他一些工作中需要这个。 – nb1