假设我们有一个像
这样的矢量x <- c("I", "sleep", "every", "day", "all", "night")
你如何操纵上面的这个向量,以便得到类似的东西
通过将两个元素组合在一起并同时删除x[3]
和x[4]
索引,“我睡觉”“通宵”?感谢。
答案 0 :(得分:0)
这将按照您的要求进行
x <- c("I", "sleep", "every", "day", "all", "night")
i <- 1
while (i < length(x)){
if(i %in% 3:4){
i <- i+1
next
} else {
print(paste(x[i], x[i+1],sep="-"))
i <- i+2
}
}
输出:
[1] "I-sleep"
[1] "all-night"
答案 1 :(得分:0)
x <- c("I", "sleep", "every", "day", "all", "night")
c(paste(x[c(1,2)],collapse="-"),paste(x[c(5,6)],collapse="-"))
# [1] "I-sleep" "all-night"
答案 2 :(得分:0)
当vector
中有更多元素时,这是另一个版本。删除第3个和第4个元素后,将其转换为matrix
,然后转换为data.frame
,并使用paste
中的do.call
按行加入元素
do.call(paste, c(as.data.frame(matrix(x[-(3:4)],
ncol=2, byrow=TRUE)), sep="-"))
#[1] "I-sleep" "all-night"
或者通过循环使用逻辑vector
进行子集化,然后paste
一步
x1 <- x[-(3:4)]
paste(x1[c(TRUE, FALSE)], x1[c(FALSE, TRUE)], sep="-")
#[1] "I-sleep" "all-night"