【问题标题】:Delete a row by index when no rows are matched没有匹配的行时按索引删除一行
【发布时间】:2017-07-11 14:09:02
【问题描述】:

我想删除向量k索引的一行矩阵x比如

x = matrix(1:10, 5, 2)
k = rep(1, 5)

# my attempt:
index = which(k == 0)
y = x[-index, ]
#      [,1] [,2]

这里,没有行满足我的删除条件k == 0,所以index 将返回空向量integer(0)。因此,x[-index, ] 将返回一个没有行的矩阵,而不是保留它自己。

我不知道如何处理这个问题,请有人帮我解决这个问题?

【问题讨论】:

  • y <- x[k != 0, ]?
  • if (length(index)==0) {y <- x} else {y <- x[-index]}
  • @Axeman,当k 不存在时,它会给出预期的行为,但是当k 存在时,它给出的输出与y <- x[-index] 不同,至少对我来说......
  • 是的,这就是像这样进行索引时的风险。最好坚持原始条件(k != 0)而不是满足它的索引的可能零长度向量......

标签: r


【解决方案1】:

唯一的复杂因素可能是 k 的大小。 否则这应该解决它: 给定 x 为:

  x=cbind(c(1,2,3,4,5,6),c(1,2,3,4,5,6))

  k=c(1,2,0,1,0,2)

然后

  x[!k==0,]

【讨论】:

    猜你喜欢
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多