gpt4 book ai didi

r - 试图在 R 中操作向量的单个元素

转载 作者:行者123 更新时间:2023-12-04 11:27:14 27 4
gpt4 key购买 nike

我的目标是计算向量从正值变为负值的次数,反之亦然。例如,我会将其保存在“更改”下。例如

randomvector <- c(0, 3, 2, -1, -4, -1, 2, 5, 8, 6, 3, 1, -2, -1, 1, 0, 3)

在这种情况下,“更改”将为 4,(2 后跟 -1,-1 后跟 2,1 后跟 -2,-1 后跟 1)

这就是我目前所拥有的。

Point1 <- c(1:16)
Point2 <- c(2:17)

Number = 0
if(randomvector[Point1] >0 & randomvector[Point2]) {
Number = Number + 1
}
Number

基本上,我的代码是这样说的:如果 randomvector 的第一个值 >0,并且 randomvector 的第二个值<0,则将“Number”加 1。 'Number' 用作计数以跟踪这种情况发生的次数。向量 Point1 和 Point 2 从 1 和 2 开始,分别到达 16 和 17,因为我希望 if 语句遍历向量 randomvector 中的每个连续数字对。

这是我得到的:

Warning messages:
1: In if (randomvector[Point1] > 0 & randomvector[Point2]) { :
the condition has length > 1 and only the first element will be used

> Number
[1] 0

我理解 0 的输出,因为代码在遇到 if 语句中的错误后不会运行。我也理解错误,即 if 语句不适用于矢量化对象。我真的不确定如何攻击它,或者我是否使用了最好的方法。如果我不是,请随时告诉我使用完全错误的方法。

谢谢!

最佳答案

一种方法是测试序列值的 sign 绝对差何时为 2

sum(abs(diff(sign(randomvector))) == 2)
# 4

自从

sign(randomvector)
# [1] 0 1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 0 1

diff(sign(randomvector))
# [1] 1 0 -2 0 0 2 0 0 0 0 0 -2 0 2 -1 1

关于r - 试图在 R 中操作向量的单个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41051719/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com