cumsum() 保持 returning 为逻辑但需要它 return 作为整数

cumsum() keeps returning as logical but need it to return as integer

如何运行编码为累积数字?

这是我的代码

x <- runif(50)
y <- 10

cumsum(x) <= y

它只是 returns 逻辑(布尔)

[1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE

如果我尝试通过添加 as.numeric 或 as.integer 来更正它 returns

 [1] 1 1 1 1 0 0 0 0 0 0

您返回的不是 cumsum(x) 的值,而是逻辑语句“cumsum(x) 小于或等于 y”的值。此语句的结果是布尔值而不是数字。

如果 cumsum(x)<= y,您的代码存在问题。每当你进行这些比较时,你都会得到一个逻辑向量。 但是,如果您正在寻找小于 y 的商品,您可以执行以下操作:

x <- runif(50)
y <- 10

idx <- which(cumsum(x) <= y)
x[idx]   

idx 存储条件匹配的索引,即 cumsum(x) <= y。要打印这些索引处的数字,您可以使用 x[idx].

输出将如下所示:

[1] 0.95362053 0.09553108 0.82016689 0.69883212 0.35495891 0.16966706
 [7] 0.15281253 0.16532772 0.81920233 0.82249972 0.30146590 0.69536763
[13] 0.32764723 0.40601504 0.70189321 0.16597773 0.25304473 0.41667253
[19] 0.52499118 0.27216339 0.27347937