1

我正在寻找一个函数,它接受一个列表(数字、字符或任何类型的对象)并返回两个向量(或向量列表),它们代表所有可能的交互(我们可能会table(..)在这些输出上应用函数)。

> my.fun(list(1,2)) # returns the following
> c(1)
> c(2)

> my.fun(list('a','b','c')) # returns the following
> c('a','a','b')
> c('b','c','c')

> my.fun(list('a','b','c','d')) # returns the following
> c('a','a','a','b','b','c')
> c('b','c','d','c','d','d')

是否有意义?

4

1 回答 1

1

使用combn

f <- function(L) {
  i <- combn(length(L), 2)
  list(unlist(L[i[1, ]]), unlist(L[i[2, ]]))
}

然后,

> f(list(1,2))
[[1]]
[1] 1

[[2]]
[1] 2

> f(list('a','b','c'))
[[1]]
[1] "a" "a" "b"

[[2]]
[1] "b" "c" "c"

> f(list('a','b','c','d'))
[[1]]
[1] "a" "a" "a" "b" "b" "c"

[[2]]
[1] "b" "c" "d" "c" "d" "d"
于 2013-11-10T13:33:25.053 回答