当前位置:  开发笔记 > 编程语言 > 正文

增加每第n个范围R.

如何解决《增加每第n个范围R.》经验,为你挑选了1个好方法。

我正在编写R代码,其中有一个向量'x',其中包含值1到100,我想创建另一个向量'y',它在每第n个范围内设置一系列值.我确定我可以使用rep()和seq(),但我无法找出代码来获得我需要的东西.这是输出应该是什么样子

x <- 1:100

y <- 1 2 3 11 12 13 21 22 23 31 32 33 41 42 43 51 52 53 61 62 63 71 72 73 81 82 83 91 92 93

所以如果我有一个向量x < - 1001:1100,x [y]应该返回:

  1001 1002 1003 1011 1012 1013 1021 1022 1023 1031 1032 1033 1041 1042 1043...etc

有任何想法吗?



1> talat..:

你可以用grepl它:

x <- 1001:1100
y <- grepl("[1-3]$", x)
x[y]
# [1] 1001 1002 1003 1011 1012 1013 1021 1022 1023 1031 1032 1033 1041 1042 1043 1051 1052
#[18] 1053 1061 1062 1063 1071 1072 1073 1081 1082 1083 1091 1092 1093

它只是检查x最后一个数字是否在1,2或3范围内的每个元素,如果是,则返回TRUE,否则返回FALSE.然后将该逻辑索引用于子集x.


如果您的目标不是以1,2或3结尾的子集,而是始终将3个元素子集,则省略7,然后再次使用子集3等等...您可以这样做:

x <- 1001:1100
y <- rep(c(TRUE, FALSE), c(3, 7))
x[y]
# [1] 1001 1002 1003 1011 1012 1013 1021 1022 1023 1031 1032 1033 1041 1042 1043 1051 1052
#[18] 1053 1061 1062 1063 1071 1072 1073 1081 1082 1083 1091 1092 1093

在这种情况下,y再次符合逻辑的向量被回收 - 注意length(x)应该可以被整除以length(y)使其正常工作.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有