R:Select 来自序列向量的多个值
R: Select multiple values from vector of sequences
在 R 中,我试图弄清楚如何从预定义的序列向量(例如 indices = c(1:3, 4:6, 10:12, ...)
)中 select 多个值。换句话说,如果我想要一个包含 "indices" 中第 3、5 和 7 个条目的新向量,我应该使用什么语法来取回仅包含这些序列的向量,例如c(10:12, ...)
?
您正在寻找的是如何对数据进行子集化。最常见的是使用方括号表示法:
示例数据:
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
的函数也可以做到这一点。
如果我理解正确,您需要 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)]
如果我误解了您的问题,请告诉我。
在 R 中,我试图弄清楚如何从预定义的序列向量(例如 indices = c(1:3, 4:6, 10:12, ...)
)中 select 多个值。换句话说,如果我想要一个包含 "indices" 中第 3、5 和 7 个条目的新向量,我应该使用什么语法来取回仅包含这些序列的向量,例如c(10:12, ...)
?
您正在寻找的是如何对数据进行子集化。最常见的是使用方括号表示法:
示例数据:
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
的函数也可以做到这一点。
如果我理解正确,您需要 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)]
如果我误解了您的问题,请告诉我。