Hi Aureliano!

Backing up a bit (and since you're favoring an array data structure), we
had a discussion on StackOverflow regarding implementing R's concept of
"named vectors" in Raku. See:

"Is there a convenient way to replicate R's concept of 'named vectors' in
Raku, possibly using Mixins?"
https://stackoverflow.com/q/66926663

Right now I'd say my favorite answer is the one posted by Luis F. Uceta,
although for a more general solution I'd opt for conversion to 'Num'
instead of 'Int':

https://stackoverflow.com/a/67005703

HTH, Bill.

W. Michels, Ph.D.



On Wed, Jul 14, 2021 at 12:58 PM Aureliano Guedes <
guedes.aureli...@gmail.com> wrote:

> thank
>
> It is now more clear.
> And I like this notation |%a<column1> ==> map({.sqrt});
> less is more sometimes
>
>
>
> On Wed, Jul 14, 2021 at 4:41 PM Daniel Sockwell <dan...@codesections.com>
> wrote:
>
>> To expand slightly on what Clifton said, the reason that
>>
>> > %a<column3> = %a<column1>.map: { .sqrt };
>> > # (1 1.4142135623730951 1.7320508075688772 2 2.23606797749979)
>>
>> does what you mean but
>>
>> > %a{'column1'} ==> map( { .sqrt } )
>> > # (2.23606797749979)
>>
>> does not is that the method .map maps over *each item* in the Array,
>> whereas
>> ==> map maps over the Array as *one collection*.  When taking the square
>> root,
>> an Array needs to be treated as an number, which for Raku means treating
>> it as
>> a count of how many elements it has (i.e., its length).
>>
>> So `%a{'column1'} ==> map({.sqrt})` is the same as
>> `%a{'column1'}.elems.map({.sqrt})`
>>
>> If want to map over each item in the Array when using the ==> operator,
>> you need to
>> slip the items out of the Array before feeding them on.  You can do that
>> with either
>> of the following (equivalent) lines:
>>
>> > %a{'column1'}.Slip ==> map({.sqrt});
>> > |%a{'column1>'}==> map({.sqrt});
>>
>> (Also, you may already know this, but when the keys of your hash are
>> strings, you
>> can write %a<column1> instead of %a{'column1'}  )
>>
>> Hope that helps!
>>
>> –codesections
>>
>
>
> --
> Aureliano Guedes
> skype: aureliano.guedes
> contato:  (11) 94292-6110
> whatsapp +5511942926110
>

Reply via email to