使用另一个向量对向量进行子集化。

3

假设我有一个向量如下:

vector = c('hello','world')

还有另外两个向量,如下所示:

vector2 = c(2,4)
vector3 = c(4,5)

如何创建第四个向量,该向量是通过其他两个向量对第一个向量中的每个元素取子集得到的?就像这样:
vector[1][vector2[1]:vector3[1]]

所以对于这些向量,应该是这样的:
vector4 = ('ell','ld')

我尝试使用sapply,但遇到了难题,因为我不确定如何编写函数来对它们进行子集分割。

vector4 = sapply(vector, function(x) x[vector2:vector3])
1个回答

5
这可以使用substr/substring实现,它将迭代每个输入:
substr(vector, vector2, vector3)
substring(vector, vector2, vector3)
#[1] "ell" "ld" 

这两个函数略有不同。substring 函数会延伸到输入内容的较长一侧并循环使用:
substring(c("hello","nopes"), 1:3, 2:4)
#[1] "he" "op" "ll"
substr(c("hello","nopes"), 1:3, 2:4)
#[1] "he" "op"

当您想从单个字符串中提取多个子字符串时,这将非常有用:

substring("hello", 1:3, 2:4)
#[1] "he" "el" "ll"
substr("hello", 1:3, 2:4)
#[1] "he"

@d.b - substrsubstring是2个不同的函数。 - thelatemail
mapply 更好 - Mike H.
谢谢,比我想象的简单多了。 - ThatsNotMyName

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接