Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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 - Fatal编程技术网

向量的R常增量子集

向量的R常增量子集,r,R,我有一个数组(可选): 它在开始或结束时有时会有不均匀的增量。例如,第一个数字是550,然后马上变成600,增加了50个点 我知道,在一个中心数附近(在货币处),存在上述向量的子集,其增量为10点。我想设法把它提取出来。该向量的中心编号为1090。它可以为不同的向量(如上面的向量)持续变化,但应该在中心附近 对于上面的数组,我想提取: 700 710 720 730 740 750 760 770 780 790 800 810 820 830 840 850

我有一个数组(可选):

它在开始或结束时有时会有不均匀的增量。例如,第一个数字是550,然后马上变成600,增加了50个点

我知道,在一个中心数附近(在货币处),存在上述向量的子集,其增量为10点。我想设法把它提取出来。该向量的中心编号为1090。它可以为不同的向量(如上面的向量)持续变化,但应该在中心附近

对于上面的数组,我想提取:

 700  710  720  730  740  750  760  770  780  790  800  810  820  830  840  850  860  870 880  890  900  910  920  930  940  950  960  970  980  990 1000 1010 1020 1030 1040 1050 1060 1070 1080 1090 1100 1110 1120 1130 1140 1150 1160 1170 1180 1190 1200 1210 1220 1230 1240 1250 1260 1270 1280 1290 1300 1310 1320 1330 1340 1350 1360 1370 1380 1390 1400 1410 1420 1430 1440 1450 1460 1470 1480 1490 1500
在这个向量中,所有数字都以10点的恒定速率递增。所以本质上,我希望能够将第一个向量子集为一个子集,在10点处不断增加。我该怎么做

一种方法是太过循环。取和之间的差值作为10点差值的子集。但这种方式不是很优雅,因为我必须设置一个数字来停止循环。我喜欢听有没有更好的方法

谢谢

编辑:

对于以下序列,朱利叶斯的答案似乎不起作用

700  710  720  730  740  750  760  770  780  790  800  810  820  830  840  850  860  870  880  890  900  910  920  930  940  950  960  970  980  990 1000
1010 1020 1030 1040 1050 1060 1070 1080 1090 1100 1110 1120 1130 1140 1150 1160 1170 1180 1190 1200 1210 1220 1230 1240 1250 1260 1270 1280 1290 1300 1310
1320 1330 1340 1350 1360 1370 1380 1390 1400 1450 1500
当我使用朱利叶斯的答案时,我得到: 1410 1420 1430 1440 1450 1460 1470 1480 1490 1500 1510 1520 1530 1540 1550 1560 1570 1580 1590 1600 1610 1620 1630 1640 1650 1660 1670 1680 1690 1700 1710 1720 1730 1740 1750 1760 1770 1780 1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 2000 2010 2020
2030 2040 2050 2060 2070 2080 2090 2100 2110使用此代码块:

#Subtracting each value by the successor in the vector
b <- a[2:length(a)]-a[1:(length(a)-1)]
#Which difference value has the longest run length
maxpos <- which(rle(b)$length==max(rle(b)$length))
# Extracting the starting and ending indices
start <- sum(rle(b)$length[1:maxpos-1]) + 1
end <- start + rle(b)$length[maxpos]

#Extracted values
a[start:end]

使用此代码块:

#Subtracting each value by the successor in the vector
b <- a[2:length(a)]-a[1:(length(a)-1)]
#Which difference value has the longest run length
maxpos <- which(rle(b)$length==max(rle(b)$length))
# Extracting the starting and ending indices
start <- sum(rle(b)$length[1:maxpos-1]) + 1
end <- start + rle(b)$length[maxpos]

#Extracted values
a[start:end]

以下几行给出了具有恒定增量10的最长子序列:

v <- rle(x - 1:length(x) * 10)
v$v[which.max(v$l)] + (sum(v$l[seq_len(which.max(v$l) - 1)]) + 1:max(v$l)) * 10
# [1]  700  710  720  730 ... 1500

v以下几行给出了具有恒定增量10的最长子序列:

v <- rle(x - 1:length(x) * 10)
v$v[which.max(v$l)] + (sum(v$l[seq_len(which.max(v$l) - 1)]) + 1:max(v$l)) * 10
# [1]  700  710  720  730 ... 1500

v“围绕中心”不是很精确。你可以假设你正在寻找一个具有常数增量的最长子序列吗?类似于
rle(diff(你的_向量))
的东西应该是有用的。而且,你的意思是
vector
对,不是类
array
的对象?“围绕中心”不是很精确。我们可以假设您正在寻找具有常数增量的最长子序列吗?类似于
rle(diff(your_vector))
的内容应该会有所帮助。而且,您的意思是
vector
对吗,不是类
array
的对象?可以使用
b可以使用
b您好,我刚刚有时间尝试您的建议,但对我的给定示例不起作用…(请参见编辑)您好,我刚刚有时间尝试您的建议,但对我的给定示例不起作用…(请参见编辑)