【问题标题】:In R, why does deleting rows or cols by empty index results in empty data ? Or, what's the 'right' way to delete?在 R 中,为什么按空索引删除行或列会导致空数据?或者,删除的“正确”方法是什么?
【发布时间】:2015-03-01 20:03:24
【问题描述】:

这是在 R 中真正让我烦恼的事情之一。考虑以下示例:

a=data.frame(x=c(1,2),y=c(3,4))
i=which(a$x==0)

此时,i 为“integer(0)”,length(i) 为 0。现在如果我这样做:

b=a[-i,]

因为我是通过空索引删除的,所以我希望 b 将所有数据都放在 a 中。但是 b 是一个空数据框。我必须这样做:

if (length(i)>0) b=a[-i,] else b=a

这同样适用于矩阵。有没有一种方法可以在没有我的 if-else 的情况下正确处理空索引?

【问题讨论】:

  • 也许您应该首先使用 for 循环来执行此操作。你想达到什么目的?
  • 你要的是空集(并得到它)。
  • BondedDust,我在哪里要空集?我认为它试图通过一组空的索引值删除行,这应该返回我完整的数据集。

标签: r indexing syntax selection


【解决方案1】:

这将解决您上面的示例

 a <- data.frame(x=c(1,2),y=c(3,4))
 b <- a[a$x != 0, ]

【讨论】:

  • 假设我已经在 a 中建立了一个满足某些条件的索引值列表,然后我想这样做:'b=a[-i,]; a=a[i,]'。只是烦人的是,这种简单直接的语法不起作用。
猜你喜欢
  • 2015-05-07
  • 2022-01-05
  • 1970-01-01
  • 2013-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多