Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用R中的最小值和最大值用其他二进制值替换二进制向量_R_Replace_Alternating - Fatal编程技术网

使用R中的最小值和最大值用其他二进制值替换二进制向量

使用R中的最小值和最大值用其他二进制值替换二进制向量,r,replace,alternating,R,Replace,Alternating,我有以下矩阵: B = as.POSIXct("2015-06-21") + seq(1,18) P = c(21.675,21.775,21.675,21.725,21.575,21.525,21.625,21.475,21.375,21.325,21.32,21.475,21.375,21.325,21.425,21.525,21.275,21.325) A = c(-1,1,-1,1,-1,0,1,-1,0,0,0,1,-1,0,1,0,-1,1) C = c(rep(0,15),1,0,

我有以下矩阵:

B = as.POSIXct("2015-06-21") + seq(1,18)
P = c(21.675,21.775,21.675,21.725,21.575,21.525,21.625,21.475,21.375,21.325,21.32,21.475,21.375,21.325,21.425,21.525,21.275,21.325)
A = c(-1,1,-1,1,-1,0,1,-1,0,0,0,1,-1,0,1,0,-1,1)
C = c(rep(0,15),1,0,0)
D = c(0,0,0,0,0,-1,0,0,-1,-1,-1,0,0,-1,0,0,0,0)
E = seq(1,18)  

dat = as.data.frame(cbind(P,A,C,D))
rownames(dat) = B
输出矩阵如下所示:

                         P  A C  D  E
2015-06-21 00:00:01 21.675 -1 0  0  1
2015-06-21 00:00:02 21.775  1 0  0  2
2015-06-21 00:00:03 21.675 -1 0  0  3
2015-06-21 00:00:04 21.725  1 0  0  4
2015-06-21 00:00:05 21.575 -1 0  0  5
2015-06-21 00:00:06 21.525  0 0 -1  6
2015-06-21 00:00:07 21.625  1 0  0  7
2015-06-21 00:00:08 21.475 -1 0  0  8
2015-06-21 00:00:09 21.375  0 0 -1  9
2015-06-21 00:00:10 21.325  0 0 -1 10
2015-06-21 00:00:11 21.325  0 0 -1 11
2015-06-21 00:00:12 21.475  1 0  0 12
2015-06-21 00:00:13 21.375 -1 0  0 13
2015-06-21 00:00:14 21.325  0 0 -1 14
2015-06-21 00:00:15 21.425  1 0  0 15
2015-06-21 00:00:16 21.525  0 1  0 16
2015-06-21 00:00:17 21.275 -1 0  0 17
2015-06-21 00:00:18 21.325  1 0  0 18
A列交替使用-1和1s。我们的目标是查看A列中的零,看看是否可以用C和D替换它们

E列表示行号,p列包含价格信息。一列表示局部最小和最大点(-1和1)

所以在第4行和第7行之间,第6行有一个零。4和7表示21.725和21.625的局部最大点

我想检查第5行是否确实是第4行和第7行之间的最小数字。结果表明,第6行的值较低,为21.525,而第5行的值为21.575

所以,我想将A列的第5个条目从-1替换为0,将第6个条目从0替换为-1

我想用上述逻辑仔细检查矩阵,最后得出以下结果:

                         P  A C  D  E
2015-06-21 00:00:01 21.675 -1 0  0  1
2015-06-21 00:00:02 21.775  1 0  0  2
2015-06-21 00:00:03 21.675 -1 0  0  3
2015-06-21 00:00:04 21.725  1 0  0  4
2015-06-21 00:00:05 21.575  0 0  0  5
2015-06-21 00:00:06 21.525 -1 0 -1  6
2015-06-21 00:00:07 21.625  1 0  0  7
2015-06-21 00:00:08 21.475  0 0  0  8
2015-06-21 00:00:09 21.375  0 0 -1  9
2015-06-21 00:00:10 21.325 -1 0 -1 10
2015-06-21 00:00:11 21.325  0 0 -1 11
2015-06-21 00:00:12 21.475  1 0  0 12
2015-06-21 00:00:13 21.375  0 0  0 13
2015-06-21 00:00:14 21.325 -1 0 -1 14
2015-06-21 00:00:15 21.425  0 0  0 15
2015-06-21 00:00:16 21.525  1 1  0 16
2015-06-21 00:00:17 21.275 -1 0  0 17
2015-06-21 00:00:18 21.325  1 0  0 18

我在编写有效的代码时遇到了困难,这些代码确实通过了这种逻辑。任何帮助都将不胜感激

C
D
是干什么的?在本例中不一定是这样,而是C和D在A中生成了0。
C
D
是干什么的?在本例中不一定是这样,而是C和D在A中生成了0。