如何在R中使用带有列表的stopifnot

时间:2018-03-14 05:48:57

标签: r

假设我有一个向量列表。进一步假设我想根据他们的长度得到一个条件。也就是说,如果这些向量的长度不相等,我希望我的函数返回错误。

例如,

x <- c(1:4) y <- c(1:5) z <- c(1:4) k <- list(x, y, z)

我想检查他们的长度是否相等。

stopifnot(length(k[[1]]) == length (k[[2]]) == length(k[[3]]))

我如何推广此代码并使其适用于列表中任意数量的元素?

1 个答案:

答案 0 :(得分:1)

我们可以将lengthsunique

一起使用
stopifnot(length(unique(lengths(k)))==1)
  

错误:长度(唯一(长度(k)))== 1不为TRUE

lengths将获得lengthvector中每个list的{​​{1}}作为vector,获取unique并检查如果length等于1.如果不是stopifnot,则给出错误