将四个变量索引到一个函数

时间:2016-06-19 08:30:43

标签: r list function

我有一个函数,它有四个不同长度和不同递归的变量,我想实现它们。为此,我有两个索引来自哪里索引。

#Index 1

ZA  <- list(
  list(
    list(c(1,2,3), c(4,5,6)),
    list(c(3,2,1), c(6,5,4))
  ),
  list(
    list(c(10,12,13), c(14,15,16)),
    list(c(13,12,11), c(16,15,14))
  )
)

# Index 2 - two columns however only the first one will be used.

GS2 <- list(
  list(
    list(data.frame(c(1,2,3), data.frame(c(1,2,3)))),
    list(data.frame(c(1,2,3), data.frame(c(1,2,3))))
  ),
  list(
    list(
      list(data.frame(c(1,2,3), data.frame(c(1,2,3)))),
      list(data.frame(c(1,2,3), data.frame(c(1,2,3))))
    )
  )
)

# Function
fun <- function (i,j) { 
xxi <- seq ( length ( ZA )) # 1 2 # 
xxa <- seq ( nrow ( GS2 [[1]][[1]][[1]] )) # 1 2 3 # 
xxb <- 1 # seq ( length ( B )) # 1 2 # 
Map ( function (x,y,z,p) (ZA[[x]][[y]][GS2[[x]][[y]][[1]][,z][[p]]][[1]]), 
xxi , xxb , xxa[[j]] , MoreArgs = ( x = list ( xxi[[i]] )))
D <- lapply ( xxi , fun )
} 
D

# integer(0)

# Desired Output 

[[1]]
[[1]][[1]][[1]]
[1] 1,4
[2] 1,5
[3] 1,6
[[1]][[1]][[2]]
[1] 2,4
[2] 2,5
[3] 2,6
[[1]][[1]][[3]]
[1] 3,4
[2] 3,5
[3] 3,6

[[1]][[2]][[1]]
[1] 3,6
[2] 3,5
[3] 3,4
[[1]][[2]][[2]]
[1] 2,6
[2] 2,5
[3] 2,4
[[1]][[2]][[3]]
[4] 1,6
[5] 1,5
[6] 1,4

[[2]]
[[2]][[1]][[1]]
[1] 10,14
[2] 10,15
[3] 10,16
[[2]][[1]][[2]]
[1] 12,14
[2] 12,15
[3] 12,16 
[[2]][[1]][[3]]
[1] 13,14
[2] 13,15
[3] 13,16

[[2]][[2]][[1]]
[1] 13,16
[2] 13,15
[3] 13,14
[[2]][[2]][[2]]
[1] 12,16
[2] 12,15
[3] 12,14
[[2]][[2]][[3]]
[1] 11,16
[2] 11,15
[3] 11,14

0 个答案:

没有答案