我有一个字符串
Vector
以及一组 index
值。 index
值有时可为负值或正值。
但是我们可以使用
Vector2 <- Vector[abs(index)]
从最初的 Vector
中提取我们想要的元素。
问题:是否可以在
-
的元素之间添加回来自+
的符号(index
或Vector2
)来实现下面的Desired_output
?
(注:这是一个玩具示例。
Vector
可以是任何大小或包含任何形状的字符元素,并且index
可以是任何长度,当然小于Vector
。function
的所有答案是赞赏。)
Vector <- c("advanced baseline", "beginner baseline", "intermediate baseline",
"advanced post1", "beginner post1", "intermediate post1", "advanced post2",
"beginner post2", "intermediate post2")
index = c(8,-2,-7,1)
( Vector2 <- Vector[abs(index)] )
Desired_output <- "beginner post2 - beginner baseline - advanced post2 + advanced baseline"
您可以使用
paste
将符号与向量元素合并。我猜你想保留第一个元素的减号而不是加号,以便用 gsub
将其删除。
add_signs <- function(vec, ind) {
merged <- paste(ifelse(ind < 0, '-', '+'),
vec[abs(ind)],
collapse=' ')
sub('^\\+ ', '', merged)
}
add_signs(Vector, index)
# [1] "beginner post2 - beginner baseline - advanced post2 + advanced baseline"