R:组合元素并在向量中移除indice

时间:2017-01-28 05:16:08

标签: r

假设我们有一个像

这样的矢量
x <- c("I", "sleep", "every", "day", "all", "night")

你如何操纵上面的这个向量,以便得到类似的东西 通过将两个元素组合在一起并同时删除x[3]x[4]索引,“我睡觉”“通宵”?感谢。

3 个答案:

答案 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"
相关问题