我需要检查向量的第一个数字是否小于第二个数字,第二个数字是否大于第三个数字,等等。到目前为止,我可以这样计算向量的数的差:
n <- sample(3) #may n = 132
diff(n) # outputs 2 -1
字符串
我需要检查第一个数字是否为正数,第二个数字是否为负数等。我遇到的问题是,我需要程序对长度为n的向量做这件事。我该如何实现这一点?
由于我不太清楚我在这里试图做什么,我将给予一个更好的例子:
v可以是向量c(1,2,4,3)。
我需要检查向量的第一个数字是否小于第二个,第二个是否大于第三个,第三个是否小于第四个。
所以我需要检查1 < 2 >4 < 3。(这个向量不符合要求)我得到的每个数字都将> 0,并且保证只出现一次。
这个过程需要推广到给定的n,n> 0,是一个自然数。
3条答案
按热度按时间djmepvbi1#
字符串
我们可以安全地忽略警告消息,因为我们故意使用了“回收”(这意味着
c(1, -1)
被隐式重复以匹配sign(diff(v))
的长度)。型
pb3s4cty2#
如果我们需要找出是否有替代正、负的区别,那么
字符串
此外,正如@digEmAll评论和我最初的React的变化
型
数据
型
flvlnr443#
我用来检查交替符号的函数是:
字符串
这是因为如果符号交替,那么你看到的要么是-1对1,要么是相反,两者的差值总是绝对量值2。如果两个条目具有相同的符号,则它们的符号之差为0。在您的示例中,您首先在向量上运行
diff
,以转换“更大”与“更大”。更小的“到”>0对“< 0”。下面是它如何工作的一个例子。
型
对于时间,我将与@akrun的版本进行比较。他的优点是将
diff
构建到函数中,因此可以在任何向量上调用它。然而,我的版本的好处是使用 * 只 * 向量化函数,因此不需要任何*apply
调用,这就是为什么它快了大约7- 10倍。当然,它是以微秒为单位的,但是如果你在另一个过程中调用10,000多次,那么可能会增加。型