Как исправить ошибку, вызванную «при использовании с номерами и tapply? R, пакетные меры - PullRequest
0 голосов
/ 06 ноября 2019

Я использую пакетные компоновки v1.1.5 с R v3.5.3 в Windows 10. И я думаю, что обнаружил странную ошибку или я делаю что-то не так.

Это работает

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

Что я делаю не так?
Я просто хочу сгенерировать перестановки элементов A, определенных группой B.
Результат должен быть похож на предыдущий пример, но с цифрами вместо букв.

1 Ответ

3 голосов
/ 06 ноября 2019

Ознакомьтесь с документацией на ?permutations. Обратите внимание, что первый параметр описан как

x - целое число или вектор, будет рассматриваться как n если целое число;в противном случае будет рассматриваться как v

Так что функция ведет себя по-разному, если вы передаете число или коэффициент. Если вы хотите, чтобы эти значения были взяты из первого примера, вы можете просто передать значение непосредственно параметру v=.

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