首页 > 解决方案 > 与 numbers 和 tapply 一起使用时如何解决由"引起的错误?R,包安排

问题描述

我在 Windows 10 中使用包安排 v1.1.5 和 R v3.5.3。我想我发现了一个奇怪的错误,或者我做错了什么。

这是有效的

library(arrangements)
myDF <- data.frame(A=c("a","b","c"), B=c(2000,2000,2002))
tapply(myDF$A,myDF$B, permutations)

$`2000`
     [,1] [,2]
[1,] a    b   
[2,] b    a   
Levels: a b c

$`2002`
     [,1]
[1,] c   
Levels: a b c

但这不起作用:

library(arrangements)
myDF <- data.frame(A=c(200,200,200), B=c(0,0,2))
tapply(myDF$A,myDF$B, permutations)

Error in FUN(X[[i]], ...) : too many results

我究竟做错了什么?
我只想生成由组 B 定义的 A 元素的排列。
结果应该与前面的示例类似,但使用数字而不是字母。

标签: rtapply

解决方案


查看文档?permutations。请注意,第一个参数描述为

x -- 整数或向量,将被视为n整数;否则,将被视为v

因此,如果您传入一个数字或一个因子,该函数的行为会有所不同。如果您想从第一个示例中提取这些值,您可以直接将值传递给v=参数。

tapply(myDF$A, myDF$B, function(x) permutations(v=x))

推荐阅读