嵌套列表上的迭代循环,用于将索引变量索引到数据变量

时间:2016-03-09 20:21:32

标签: r data.table

指示通过函数迭代:

ListBox

在下面找到我遇到错误的代码部分。如果index_map是唯一列表(没有变量x),则这是一种有效的格式。我的目标是根据index_list的索引进行合并。尝试这样做时,我得到了以下错误。

input_list <- list (list(c(1,2,3),c(4,5,6)),list(c(7,8,9),c(10,11,12)))

# data.table :: CJ is a fast expand.grid
library ( data.table )
total_value <- 28

fun <- function (x) do.call (CJ , input_list[[x]]) # get all combinations
DT  <- lapply ( seq ( length ( input_list )) , fun )
fun <-  function (x)  DT[[x]] [rowSums (DT[[x]]) == total_value ] 
values  <-  lapply ( seq ( length ( DT )) , fun )

fun <- function (x) lapply(input_list[[x]],function(a)    data.table(a,seq_along (a)))
index_map <- lapply (seq(length(input_list)),fun)
fun <-  function(x) lapply (names (values[[x]]),function (b) c(b,sub("V", "index",b)))
nams <- lapply(seq(length(values)),fun)
fun <- function(x)Map(setnames,index_map[[x]],nams[[x]] )
lapply(seq(length(index_map)),fun)

我的理解是,我没有足够地指示循环迭代形成索引映射的两个子列表。我的目标是能够在input_list中映射导致total_value的索引。我已经查看了其他帖子,其中循环被嵌入式函数替换但是如果这是足够的格式,我无法正确指示。你碰巧知道我怎么能指导这个。

1 个答案:

答案 0 :(得分:0)

V1应显示列list的类型为list。类型list表示列中的每个单元格都可以是任何单元格;例如不同长度的矢量,其他嵌入的data.table,任何R对象,函数等

查看该列,看看它是否真的应该是vector类型。可能它应该是integer;例如numericcharacterDT[,V1:=unlist(V1)]向量。如果是,请对其list进行操作。理想情况下,请避免首先创建list列。 MTLRenderCommandEncoder setDepthBias:slopeScale:clamp:类型对于值列非常有用,但对于连接列则不实用。