用于连接两个向量的程序

时间:2018-03-20 17:36:21

标签: r concatenation

我需要帮助创建一个程序,该程序采用字符串向量并将其与数字向量组合。产生(例如)的输出 Apple.1,Orange.1,Peach.1,Apple.2,Orange.2,Peach.2

我目前有

Dispatch

但这不起作用。任何人都可以告诉我我做错了什么吗?感谢。

3 个答案:

答案 0 :(得分:0)

我们可以使用outer

c(outer(c("Apple", "Orange", "Peach"), 1:2, FUN = paste, sep="."))
#[1] "Apple.1"  "Orange.1" "Peach.1"  "Apple.2"  "Orange.2" "Peach.2" 

答案 1 :(得分:0)

另一种解决方案是使用sapply

c(sapply(c("Apple", "Orange", "Peach"), paste, 1:2, sep = '.'))

如果您希望它们与akrun解决方案的顺序相同,则可以使用t

c(t(sapply(c("Apple", "Orange", "Peach"), paste, 1:2, sep = '.')))

哪种解决方案最快? outer

a <- rep(c("Apple", "Orange", "Peach"), 1000)
b <- 1:50

require(microbenchmark)
microbenchmark(
  c(t(sapply(a, paste, b, sep = '.'))),
  c(outer(a, b, FUN = paste, sep=".")),
  do.call(paste0, expand.grid(a, '.', b))
)

Unit: milliseconds
                                    expr      min       lq      mean    median        uq      max neval
    c(t(sapply(a, paste, b, sep = "."))) 76.40193 81.71269  96.04274  88.69873  98.39574 417.0988   100
  c(outer(a, b, FUN = paste, sep = ".")) 65.40994 68.89404  80.50559  75.68603  84.45135 164.9048   100
 do.call(paste0, expand.grid(a, ".", b)) 87.85504 93.79164 111.43862 104.12434 116.85417 202.7681   100

答案 2 :(得分:0)

如果要组合两个(或更多)向量的所有组合,expand.grid通常是一个很好的起点。

如果您的成果在x中,成绩在y,那么expand.grid(x, ".", y)会为您提供所需的组合。您只需将它们粘贴在一起,因此完整的解决方案可能是:

do.call(paste0, expand.grid(x, ".", y))