[R] why outer function is failing?

David Carlson dc@r|@on @end|ng |rom t@mu@edu
Mon May 4 21:34:18 CEST 2020


Re-reading your question it appears you want the number of permutations for
each pair, e.g. the number of permutations of the numbers 1 - 3 taken 1
time, etc. If I am correct, this should get you want you want:

ct <- outer(y, x, "^")
ct
     [,1] [,2] [,3]  [,4]   [,5]    [,6]
[1,]    3    9   27    81    243     729
[2,]    4   16   64   256   1024    4096
[3,]    5   25  125   625   3125   15625
[4,]    6   36  216  1296   7776   46656
[5,]    7   49  343  2401  16807  117649
[6,]    8   64  512  4096  32768  262144
[7,]    9   81  729  6561  59049  531441
[8,]   10  100 1000 10000 100000 1000000

David L Carlson
Anthropology Department
Texas A&M University

On Mon, May 4, 2020 at 2:18 PM David Carlson <dcarlson using tamu.edu> wrote:

> The FUN= argument must be a vectorized function (see the documentation,
> ?outer), but the function rolldie takes only scalar values as arguments:
>
> rolldie(x, y)
> Error in rep("X", times) : invalid 'times' argument
> In addition: Warning messages:
> 1: In 1:times : numerical expression has 6 elements: only the first used
> 2: In 1:nsides : numerical expression has 8 elements: only the first used
>
> David Carlson
> Anthropology Department
> Texas A&M University
>
> On Mon, May 4, 2020 at 1:54 PM Yousri Fanous <yousri.fanous using gmail.com>
> wrote:
>
>> Hello
>>
>> From outer help page:
>> outer takes two vectors
>> <
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__renenyffenegger.ch_notes_development_languages_R_data-2Dstructures_vector_index&d=DwICAg&c=u6LDEWzohnDQ01ySGnxMzg&r=VAaHUElasUXjP9TzIcfIrXdkDpHnJBBZ9Q1u5LcXz9s&m=IdpldO8NxT8R9A1xPy5xD8VynSPRwZchLY3bUEufCYE&s=aLWLgMoHHIk7DaXgX4L0emzN-KDe2WFMYPpVwZuk35U&e=
>> >
>> and a function (that itself takes two arguments) and builds a matrix
>> <
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__renenyffenegger.ch_notes_development_languages_R_data-2Dstructures_matrix_index&d=DwICAg&c=u6LDEWzohnDQ01ySGnxMzg&r=VAaHUElasUXjP9TzIcfIrXdkDpHnJBBZ9Q1u5LcXz9s&m=IdpldO8NxT8R9A1xPy5xD8VynSPRwZchLY3bUEufCYE&s=j5k3zAaxPR8LMHbTe72GTbSGOV_RE5K1Uc2jytaB8SE&e=
>> >
>> by calling the given function for each combination of the elements in the
>> two vectors.
>>
>> x<-1:6
>> y<-3:10
>>
>>  m<-outer (x,y,function (x,y) rnorm(x,y))
>> works as expected.
>>
>> But now when I replace rnorm with rolldie from package (prob) outer
>> complains
>>  library (prob)
>> m<-outer (x,y,function (x,y) nrow(rolldie(x,y)))
>> Error in rep("X", times) : invalid 'times' argument
>> In addition: Warning messages:
>> 1: In 1:times : numerical expression has 48 elements: only the first used
>> 2: In 1:nsides : numerical expression has 48 elements: only the first used
>>
>> nrow(rolldie(5,4))
>> [1] 1024
>>
>> 1) why outer is failing with rolldie?
>> 2) What does the error mean?
>>
>> As a workaround I can do this thru a double loop, but I was hoping to get
>> a
>> more efficient way.
>>
>> Thanks for the help
>>
>> Yousri Fanous
>> Software developer
>> IBM Canada
>>
>>         [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_r-2Dhelp&d=DwICAg&c=u6LDEWzohnDQ01ySGnxMzg&r=VAaHUElasUXjP9TzIcfIrXdkDpHnJBBZ9Q1u5LcXz9s&m=IdpldO8NxT8R9A1xPy5xD8VynSPRwZchLY3bUEufCYE&s=6jxhmxrSNqyZS4-oU2g8r2R0LEZ0yhtSm-4GdfP0Cbk&e=
>> PLEASE do read the posting guide
>> https://urldefense.proofpoint.com/v2/url?u=http-3A__www.R-2Dproject.org_posting-2Dguide.html&d=DwICAg&c=u6LDEWzohnDQ01ySGnxMzg&r=VAaHUElasUXjP9TzIcfIrXdkDpHnJBBZ9Q1u5LcXz9s&m=IdpldO8NxT8R9A1xPy5xD8VynSPRwZchLY3bUEufCYE&s=rFq4TmerLd5tegHnWSbx5ISdfDNks-TIa9Whne6bBaM&e=
>> and provide commented, minimal, self-contained, reproducible code.
>>
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list