R语言两个字符串数组的叉积组合

Posted

技术标签:

【中文标题】R语言两个字符串数组的叉积组合【英文标题】:R language cross-product combination of two string arrays 【发布时间】:2015-07-09 16:26:19 【问题描述】:

假设我有两个数组 a 和 b:

a=seq(2013,2015)
b=c('-03-31','-06-30')

我想将 a 中的每个元素与 b 中的每个元素结合起来。结果应该是一个如下所示的数组:

"2013-03-31" "2013-06-30" "2014-03-31" "2014-06-30" "2015-03-31" "2015-06-30"

我该怎么做?

【问题讨论】:

我不明白为什么这篇文章被评为-3。任何投票的人可以解释一下吗? akrun 的答案就是我正在寻找的,谢谢 akrun。 例如,如果我在 google 上搜索关键字“r 每个两个向量的组合”,我会得到***.com/questions/16143700/…,这基本上就是您所要求的。 在不评论原因的情况下投反对票似乎仍然很糟糕 @akrun,我想你可能是对的。 【参考方案1】:

你可以试试

c(outer(a, b, FUN=paste0))
#[1] "2013-03-31" "2014-03-31" "2015-03-31" "2013-06-30" "2014-06-30"
#[6] "2015-06-30"

或者

do.call(paste0,expand.grid(a,b))

或者

sprintf('%s%s', rep(a, length(b)), rep(b, length(a)))

【讨论】:

【参考方案2】:

如果您想要一个字符向量作为结果,akrun 的示例效果很好,但它们并不便于处理该对的每一侧。

这个函数会给你一个包含两组叉积的列表:

cross <- function(x, y = x) 

    result <- list()

    for (a in unique(x)) 

        for (b in unique(y)) 

            result <- append(result, list(list(left = a, right = b)))
        
    

    result

例子:

cross(c(1, 2, 3), c("a", "b", "c"))

【讨论】:

以上是关于R语言两个字符串数组的叉积组合的主要内容,如果未能解决你的问题,请参考以下文章

二维图形变换

计算机图形学-向量向量加减法向量的点积(乘)向量的叉积(乘)

用C语言编写一个计算两个向量叉积的程序

列的叉积[关闭]

怎么用c语言将两个数组并起来?

c语言中将一个数组中,相邻得元素俩俩相加找出最大得组合