如何使用 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 获得相邻的组合对?的主要内容,如果未能解决你的问题,请参考以下文章