Unfortunately, given this: my %a = 'column1' => [1...5], 'column2' => ['a'...'e'] >
column1 and column2 cannot yet be referenced to create column3. You need to do that on another line: %a<column3> = %a<column1>.map: { .sqrt }; Which gives the following: > %a.gist.say # {column1 => [1 2 3 4 5], column2 => [a b c d e], column3 => (1 1.4142135623730951 1.7320508075688772 2 2.23606797749979)} Does this help? - X On Wed, Jul 14, 2021 at 2:32 PM Aureliano Guedes <guedes.aureli...@gmail.com> wrote: > Thanks JJ, Marcel, Matthew > > That's help me a lot to understand how Raku hashes work; > Little bit complex compared to Perl5. > > But now I got another question > > given > my %a = 'column1' => [1...5], 'column2' => ['a'...'e'] > > I want to calculate sqrt and store in column3 > > %a{'column1'}.map({ .sqrt }) > (1 1.4142135623730951 1.7320508075688772 2 2.23606797749979) > > %a{'column3'} = %a{'column1'}.map({ .sqrt }) > > %a{'column3'} > (1 1.4142135623730951 1.7320508075688772 2 2.23606797749979) > > %a.keys > (column1 column3 column2) > > But... > > %a{'column1'} ==> map( { .sqrt } ) > (2.23606797749979) > > How I access the array's values within the hash? > > > On Wed, Jul 14, 2021 at 2:55 PM Marcel Timmerman <mt1...@gmail.com> wrote: > >> On 7/14/21 7:43 PM, Aureliano Guedes wrote: >> >> Hi all, >> >> Trying to knowing a little bit more about Raku lang, I decided to write a >> simple (as possible) lib to became similar to R/dplyr or Python/Pandas >> method to data wrangle. >> >> So, Raku gives us the possibility to deal with data in a functional way, >> given the native pipe operator, which is wonderful for newbies. >> > @a = 1..100 >> > @a ==> map( { .sqrt } ) >> > @a ==> HYPER( { .sqrt } ) # faster map >> Even it is being *too verbose*, is good enough for the first moment to a >> data scientist. >> >> So I'm trying to decide the best way to abstract columns. >> First, I decide to use a hash where the key is the column name and the >> value is the oriented list ou array. >> >> > my %a = {'column1' => [1...5], 'column2' => ['a'...'e']} >> Potential difficulties: >> Useless use of hash composer on right side of hash assignment; did >> you mean := instead? >> at line 2 >> ------> <BOL>⏏<EOL> >> {column1 => [1 2 3 4 5], column2 => [a b c d e]} >> >> It is a warning, not an error! >> >> But let's obey the warning. >> > my %a = {'column1' := [1...5], 'column2' := ['a'...'e']} >> ===SORRY!=== Error while compiling: >> Cannot use bind operator with this left-hand side >> ------> n1' := [1...5], 'column2' := ['a'...'e']⏏} >> >> >> ':=' in the error is meant to replace the assignment so you are binding >> directly to the hash. >> So write, >> >> my %a := {'column1' => [1...5], 'column2' => ['a'...'e']} >> >> Without the binding you could write instead >> >> my %a = 'column1' => [1...5], 'column2' => ['a'...'e'] >> >> See also https://docs.raku.org/type/Hash and >> https://docs.raku.org/routine/:= >> >> >> Now we got an error. >> >> Someone may explain me why I got this error?? >> >> Thanks in advance >> >> >> >> >> -- >> Aureliano Guedes >> skype: aureliano.guedes >> contato: (11) 94292-6110 >> whatsapp +5511942926110 >> >> >> > > -- > Aureliano Guedes > skype: aureliano.guedes > contato: (11) 94292-6110 > whatsapp +5511942926110 >