【问题标题】:Using a while loop to iterate over array until it becomes empty in R使用 while 循环遍历数组,直到它在 R 中变为空
【发布时间】:2018-09-30 10:28:02
【问题描述】:

所以我想不通。

我正在遍历这个数组并逐行删除,但我找不到“while”循环的正确退出条件。我有以下内容:

array1 <- array(0,dim = c(5,2))
while(nrow(array1) > 0) {
    #do something
    array1 = array1[-1,]
 }

这给了我错误

Error in while (nrow(array1) > 0) { : argument is of length zero

而如果我手动测试它:

array1 = array1[-(1:5),]
nrow(array1) > 0
# [1] FALSE

因此(理论上)打破了“while”循环中的条件。导致错误的“while”循环中发生了什么。

提前感谢您的帮助!

【问题讨论】:

  • 你的问题是什么?
  • 另一个drop = FALSE 实例在索引array1[-1,] 时咬你。你想要array[-1,,drop = FALSE]。 ;)
  • 添加nrow(vector)返回NULLNULL &gt; 0 返回logical(0)while(logical(0)){1} 返回您的错误。

标签: arrays r loops while-loop


【解决方案1】:

您需要添加drop=FALSE以避免在最后一步中将数组转换为向量,从而弄乱维度索引。

array1 <- array(0,dim = c(5,2))
while(nrow(array1) > 0) {
   #do something
   array1 = array1[-1,, drop=FALSE]
}

【讨论】:

    猜你喜欢
    • 2019-08-13
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多