我的功能很复杂,我希望尽可能简单。所以我尝试使用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`。