我有两个项目的清单。我想使用该if
语句设置条件。条件也需要包含all
语句。
换句话说,
假设我有以下列表:
library(VineCopula)
x <- BiCop(0,0)
y <- BiCop(0,0)
z <- list(x, y)
我想有一个条件,如果所有z[[i]]$tau
小于或大于特定值,则z
必须设置为零。
这是我的代码(请注意,我的列表可以有任何长度。即长度不固定。这里,我将长度固定为两个元素,但我的真实数据需要大于2。):
for (i in seq_len(m)){
if (all( 0 <= z[[i]]$tau =< 0.15))
z <- 0
}
如何在 R 中做到这一点?
提取list
元素,用all
逻辑条件换行以返回单个TRUE/FALSE
,使用它 in if
,循环 'z' 并将tau
元素分配给 0
tau1 <- sapply(z, "[[", "tau")
i1 <- all(tau1 >= 0 & tau1 <= 0.15)
if(i1) {
z <- lapply(z, function(x) {x$tau <- 0; x})
}
语法0 <= z[[i]]$tau =< 0.15
似乎是数学的,这不是正确的R
语法,因为我们需要将两个表达式与&
. 此外,由于我们正在做的检查all
的list
元素,我们可能需要做这两个for
循环(如果for
使用循环) -第一个检查,如果all
符合条件,第二个做的分配(如果第一个返回TRUE) IE
i1 <- TRUE
# // first loop
for(i in seq_along(z)) {
i1 <- i1 & z[[i]]$tau >= 0 & z[[i]]$tau <= 0.15
}
# // second loop
if(i1) {
for(i in seq_along(z)) {
z[[i]]$tau <- 0
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句