如何在mapply函数

时间:2017-10-20 05:48:39

标签: r

我的功能很复杂,我希望尽可能简单。所以我尝试使用mapply,因为我有很多列表。但是,这些列表是通过lapply函数创建的。我尝试更新一个函数(这是mapply函数所需的输出)但是,它没有更新哪个返回我NULL。我的意思是更新是为了获得新值。这是我的代码并尝试。

A1 <- c(0, 2, 3, 4, 4,
        0, 0, 3, 4, 1,
        0, 0, 0, 4, 1,
        0, 0, 0, 0, 3,
        0, 0, 0, 0, 0)

A1  <- matrix(A1, 5, 5)

A2 <- c(0, 2, 3, 2, 4,
        0, 0, 3, 4, 1,
        0, 0, 0, 4, 1,
        0, 0, 0, 0, 3,
        0, 0, 0, 0, 0)

A2  <- matrix(A2, 5, 5)

A <- list(A1, A2)

s <- length(A)

AA <- lapply(A, function(x) x > 0)

AA2 <- lapply(A, function(x) x %in% c(2, 7))

AA[is.na(AA)] <- FALSE

AA2[is.na(AA2)] <- FALSE

nAA <- lapply(AA, function(x) sum(x, na.rm = TRUE))

nAA2 <- lapply(AA2, function(x) sum(x, na.rm = TRUE))

AFA <- lapply(1:s, function(i) A[[i]][AA[[i]]])

我需要在mapply内更新它的功能是llA

llA <- lapply(1:s, function(i) double(nAA[[i]]+nAA2[[i]]))

FA <-  lapply(AFA, function(x) { which(x %in% c(2, 7))})

我的mapply函数返回NULL

 mapply(function(x,y,z,f,g)
       if(x > 0){
  for (i in 1:x){
    if(y[z[i]] == 2) {
      f[[g + i]] <- 2 
    }
  }}
  , x=nAA2,AFA,FA,lAA, nAA)

因此我需要更新的lAA函数位于mapply函数之外。所以,当我尝试在mapply函数内更新它时,我得到NULL. So I think null because nothing are updated. So, how can I make llA be updated using mapply`。

0 个答案:

没有答案