【发布时间】:2016-08-18 17:37:29
【问题描述】:
假设我有以下数组:
a <- sample(letters,100,replace=TRUE)
然后假设这些字母按顺序排列,我想从该数组中提取所有可能的“n”大小的序列。例如:
对于n=2 我愿意:paste0(a[1:99],"->",a[2:100])
对于n=3 我愿意:paste0(a[1:98],"->",a[2:99],"->",a[3:100])
你明白了。现在,我的目标是创建一个函数,它将n 作为输入,并从数组a 中返回给定长度的相应序列集
我可以使用循环和所有其他方法来做到这一点,但我希望有一个高性能的单班轮。
我对 R 有点陌生,所以我不知道所有现有的功能。
【问题讨论】:
-
试试
embed(a, n)... 用一个奇怪的名字来隐藏函数,但似乎正是这样做的。 -
@Frank 我一开始以为它不起作用,但后来我从最后一列开始读取输出,它是正确的,我只需要弄清楚如何从最后一列开始组装每一行到第一个并将它们放入一个数组中
-
之后可以颠倒列顺序,如
embed(a, n)[, n:1] -
@Frank 巧妙的技巧。我将尝试应用函数分别粘贴所有行,然后将它们移动到平面一维数组中。除非您有更好的解决方案,否则您应该将其发布为答案
标签: arrays r performance subset