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 >