R:从序列矢量中选择多个值

时间:2015-03-05 22:31:39

标签: r vector sequence indices

在R中,我试图弄清楚如何从预定义的序列矢量中选择多个值(例如indices = c(1:3, 4:6, 10:12, ...))。换句话说,如果我想在" indices"中使用第3,第5和第7个条目的新向量,我应该使用什么语法来获取仅具有完整序列的向量,例如c(10:12, ...)

2 个答案:

答案 0 :(得分:5)

如果我理解正确,您需要c(1:3, 4:6, 10:12, ...)中的第3,第5和第7个条目,这意味着您需要从向量中提取特定的索引。

当您执行c(1:3, 4:6, ...)之类的操作时,生成的矢量不是您想要的。相反,请使用list(1:3, 4:6, ...)。然后你可以这样做:

indices <- list(1:3, 4:6, 10:12, 14:16, 18:20)

x <- rnorm(100)

x[c(indices[[3]], indices[[5]])]

这相当于:

x[c(10:12, 18:20)]

这相当于:

x[c(10, 11, 12, 18, 19, 20)]

如果我误解了你的问题,请告诉我。

答案 1 :(得分:0)

您正在寻找的是如何对数据进行子集化。最常见的是使用方括号表示法:

示例数据:

my_vector <- c(100:120)
my_vector
# 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120

您想要取出的值:

indices <- c(1:3, 4:6, 10:12)
indices

# 1  2  3  4  5  6 10 11 12

使用括号表示法进行子集化

my_vector[indices]
# 100 101 102 103 104 105 109 110 111

还有一个名为subset的函数也可以这样做。