r - 交错两个向量

标签 r string vector concatenation

假设我有两个向量定义如下:

a <- c("a1", "a2", "a3")
b <- c("b1", "b2", "b3")

现在我想得到一个像这样的字符串向量:

c("a1","b1", "a2", "b2", "a3", "b3")

这可能吗?

最佳答案

您可以rbind它们,然后强制返回向量。

a <- c("a1", "a2", "a3") 
b <- c("b1", "b2", "b3")
c(rbind(a,b))

# [1] "a1" "b1" "a2" "b2" "a3" "b3"

正如 @Moody_Mudskipper 指出的,as.vector(rbind(a,b))) 更快

对于长度不同的情况,我在此链接中找到了 Rolf Turner 的以下解决方案:http://r.789695.n4.nabble.com/Interleaving-elements-of-two-vectors-td795123.html

riffle <- function (a,b) { 
  n  <- min(length(a),length(b)) 
  p1 <- as.vector(rbind(a[1:n],b[1:n])) 
  p2 <- c(a[-(1:n)],b[-(1:n)]) 
  c(p1,p2) 
} 

riffle(1:3, letters[1:5])

# [1] "1" "a" "2" "b" "3" "c" "d" "e"

关于r - 交错两个向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50516915/

相关文章:

r - R 中的并行随机数生成器

c++ - 将在堆栈上声明的元素添加到静态数组

c++ - 迭代 vector 时扩展 vector

python - 在字符串中查找城市名称

c# - 如何按值中的子字符串对 Dictionary<string,string> 进行排序?

Java将áéőűú更改为aeouu

c++ - 获取刚刚插入 vector C++ 的元素的位置

R从年份、原点和分钟构造日期时间

r - 函数 .C -- 参数设置编译失败

r - 寻找局部最大值和最小值