R 我的数字列表返回Null而不是零

R 我的数字列表返回Null而不是零,r,R,我有许多基于两种类型的列表的列表。如果条件为FALSE,则其中一个列表必须返回numeric(0),但是,它返回NULL此NULL,然后在下一步中计算,该步骤为我返回错误长度。请注意,我需要psca2作为一个列表,因为我不知道我的数据将如何显示 这是我的密码: type1 <- c(2, 6, 4, 4, 3, 5, 5, 6, 6,3) type2 <- c(3, 5, 3, 5, 6, 4, 3, 3, 3, 5) type <- list(type1, type2) np

我有许多基于两种类型的列表的列表。如果条件为
FALSE
,则其中一个列表必须返回
numeric(0)
,但是,它返回
NULL
NULL
,然后在下一步中计算,该步骤为我返回错误长度。请注意,我需要
psca2
作为一个列表,因为我不知道我的数据将如何显示

这是我的密码:

type1 <- c(2, 6, 4, 4, 3, 5, 5, 6, 6,3)
type2 <- c(3, 5, 3, 5, 6, 4, 3, 3, 3, 5)
type <- list(type1, type2)
np <- 10
np2 <- list(1,0)
输出:

> psca
[[1]]
 [1] 0.01 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00

[[2]]
 [1] 1 1 1 1 1 1 1 1 1 1

> psca2
[[1]]
[1] 1
这必须是数值(0)
有什么帮助吗?

这里,我们初始化长度为
列表
,并且有一个
if
条件,仅当“np2”的元素大于0时才进行计算。由于第二个元素是0,它不会对该元素执行任何操作,从而导致初始对象的
NULL
。相反,我们可以初始化
数值(0)
列表
,然后应用该条件

psca2 <- replicate(2, numeric(0), simplify = FALSE)
for(j in 1:2){
  if(np2[[j]] > 0 ){
    for (i in seq_along(np2)[[j]]) {
      psca2[[j]][i] <- ifelse(type[[j]][i] %in% 
                      c(104, 114, 124, 134, 204, 214, 224, 234), 0.05, 1)
      print(i)
      }

    psca[[j]] <- c(psca[[j]], psca2[[j]])
  }
} 

psca2
#[[1]]
#[1] 1

#[[2]]
#numeric(0)
psca2(0){
对于(沿(np2)[[j]]的序列中的i){

psca2[[j]][i]您将
psca2
创建为
NULL
长度
2的
列表。然后使用
if
条件
if(np2[[j]]>0)
。因此,第二个元素没有被计算,它将返回为NULL@akrun非常感谢您的精彩评论。但是我如何修复它。您能帮助我吗?如果您从
数字(0)的
列表开始
,它将返回它。例如,
psca2我只需检查有多少个数字,例如
2
。然后计数。在我的示例中,只有
1
数字是
2
。然后
np2[[1]]=1
,其中第二个数字中没有任何数字(0)
。我发布了我的评论作为回答。我记得我还将1:np2改为seq_-along(np2),这更一般。然后我可以根据需要更改列表的长度。@Alice是的,你可以在
复制中将2改为“n”
非常感谢,我真的不知道如何感谢你。@Alice没问题。很高兴帮助你
> psca
[[1]]
 [1] 0.01 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00

[[2]]
 [1] 1 1 1 1 1 1 1 1 1 1

> psca2
[[1]]
[1] 1
[[2]]
NULL
psca2 <- replicate(2, numeric(0), simplify = FALSE)
for(j in 1:2){
  if(np2[[j]] > 0 ){
    for (i in seq_along(np2)[[j]]) {
      psca2[[j]][i] <- ifelse(type[[j]][i] %in% 
                      c(104, 114, 124, 134, 204, 214, 224, 234), 0.05, 1)
      print(i)
      }

    psca[[j]] <- c(psca[[j]], psca2[[j]])
  }
} 

psca2
#[[1]]
#[1] 1

#[[2]]
#numeric(0)