如何使用分隔符将两个向量组合成对
How to combine two vectors into pairs with separator
希望我在这里使用的术语正确。
我有两个向量,
i_25_points <- 130:134
j_25_points <- 65:69
我想将它们组合成对,几乎就像一个矩阵,然后将它们折叠成如下所示的字符串
130;65|130;66|130;67....134;65|134;66|134;67|134;68|134;69
我该如何合并?我最初的想法是通过嵌套 for 循环并将它们附加在一起来创建对。
但必须有更巧妙的方法来做到这一点。
您可以使用 outer
创建所有可能的对,只需 paste
,即
paste(outer(x, y, paste, sep = ';'), collapse = '|')
带有 rep
和 paste
的选项
paste(rep(i_25_points, each = length(j_25_points)),
rep(j_25_points, length(i_25_points)), sep=";", collapse="|")
#[1] "130;65|130;66|130;67|130;68|130;69|131;65|131;66|131;67|131;68|131;69|132;65|132;66|132;67|132;68|132;69|133;65|133;66|133;67|133;68|133;69|134;65|134;66|134;67|134;68|134;69"
或使用tidyverse
library(tidyverse)
crossing(i_25_points, j_25_points) %>%
unite(newCol, i_25_points, j_25_points, sep=":") %>%
summarise(newCol = str_c(newCol, collapse="|")) %>%
pull(newCol)
数据
i_25_points <- c(130, 131, 132, 133, 134)
j_25_points <- 65:69
带有 expand.grid 和粘贴的选项
i_25_points <- 130:134
j_25_points <- 65:69
x <- expand.grid(j_25_points ,j_25_points )
paste(x[,1], x[,2], sep = ";", collapse = "|")
希望我在这里使用的术语正确。
我有两个向量,
i_25_points <- 130:134
j_25_points <- 65:69
我想将它们组合成对,几乎就像一个矩阵,然后将它们折叠成如下所示的字符串
130;65|130;66|130;67....134;65|134;66|134;67|134;68|134;69
我该如何合并?我最初的想法是通过嵌套 for 循环并将它们附加在一起来创建对。
但必须有更巧妙的方法来做到这一点。
您可以使用 outer
创建所有可能的对,只需 paste
,即
paste(outer(x, y, paste, sep = ';'), collapse = '|')
带有 rep
和 paste
paste(rep(i_25_points, each = length(j_25_points)),
rep(j_25_points, length(i_25_points)), sep=";", collapse="|")
#[1] "130;65|130;66|130;67|130;68|130;69|131;65|131;66|131;67|131;68|131;69|132;65|132;66|132;67|132;68|132;69|133;65|133;66|133;67|133;68|133;69|134;65|134;66|134;67|134;68|134;69"
或使用tidyverse
library(tidyverse)
crossing(i_25_points, j_25_points) %>%
unite(newCol, i_25_points, j_25_points, sep=":") %>%
summarise(newCol = str_c(newCol, collapse="|")) %>%
pull(newCol)
数据
i_25_points <- c(130, 131, 132, 133, 134)
j_25_points <- 65:69
带有 expand.grid 和粘贴的选项
i_25_points <- 130:134
j_25_points <- 65:69
x <- expand.grid(j_25_points ,j_25_points )
paste(x[,1], x[,2], sep = ";", collapse = "|")