如何使用 R 获得相邻的组合对?

Posted

技术标签:

【中文标题】如何使用 R 获得相邻的组合对?【英文标题】:How Can I Get Adjacent Pairs of Combination Using R? 【发布时间】:2011-11-03 19:41:04 【问题描述】:

给定一个字符列表,例如:

L <- list("a", "b", "c", "d")

注意,L 的长度不是固定的。

如何获得相邻的组合对,如:

     [,1] [,2]
[1,]  "a"  "b" 
[2,]  "b"  "c" 
[3,]  "c"  "d" 

实际上,我做这项工作是为了得到一个有向矩阵,以进行进一步的网络分析。你知道,在特定的以电脑为媒介的交流中,人们一一讨论,有先后顺序,新人只回复最新的帖子。

【问题讨论】:

所有成对组合,还是只是相邻的成对组合? 您必须提供更多信息:您将如何指定您想要的哪些组合?我们可以回答您如何获得 this 组合(我假设您想要列表中相隔 1 的组合),而不是如何获得 any specific 组合而不知道什么会定义这些组合。 指定我的问题,感谢上面的提醒。我只想得到相邻的对! 也许 (1) 编辑您的问题以反映仅对相邻对的这种偏好(以及您已经知道 combn 的事实)和 (2) 为未来的 SO 问题采取这一小方向[欢迎!] -- 包括一些关于你已经知道的细节可以帮助人们更有效地回答你。 +1 用于回复反馈和编辑您的问题以变得非常清晰。并用于提供样本数据和预期结果。欢迎来到 SO。 【参考方案1】:

使用embed

> L <- letters[1:4]
> embed(L, 2)[, 2:1]
     [,1] [,2]
[1,] "a"  "b" 
[2,] "b"  "c" 
[3,] "c"  "d" 

【讨论】:

+1 向我介绍了我以前从未见过/使用过的embed【参考方案2】:

Andrie 对嵌入的使用肯定是优雅的,而且可能更有效。这是一个稍微笨拙的方法:

> L<-c("a", "b", "c", "d")
> L
[1] "a" "b" "c" "d"
> matrix(c(L[-length(L)], L[-1]), ncol=2)
     [,1] [,2]
[1,] "a"  "b" 
[2,] "b"  "c" 
[3,] "c"  "d" 

【讨论】:

你的回答对于处理NULL值很有帮助,比如:L + 回来了。我还是更喜欢你的,但客户有他需要的东西很好。【参考方案3】:

也许combn:

L<-c("a", "b", "c", "d")

combn(L, 2)

    [,1] [,2] [,3] [,4] [,5] [,6]
[1,] "a"  "a"  "a"  "b"  "b"  "c" 
[2,] "b"  "c"  "d"  "c"  "d"  "d"

您可以根据需要从那里进行子集化。

【讨论】:

我知道这个功能,谢谢您的热心回答。以下问题是如何从中进行子集化?我想知道如何编写一个函数来完成整个过程。例如,使用长度(L)作为条件。 指定我的问题,感谢上面的提醒。我只想得到相邻的对!【参考方案4】:

您可以通过cbind 完成此操作:

L <- letters[1:4]
cbind(head(L, -1), L[-1])

【讨论】:

以上是关于如何使用 R 获得相邻的组合对?的主要内容,如果未能解决你的问题,请参考以下文章

如何计算在 r 中获得第一个真实订单之前有多少次 arima 订单不真实,以用于不同的 arima 模拟组合

如何从剑道组合框获得价值

简谈-如何使用Python和R组合完成任务

如何在 Pandas 中获得两列的组合? [复制]

在 R 中组合多个 shapefile

如何在 Python 中创建多个 for 循环列表的递归以获得组合? [复制]