On Sunday, March 29, 2015 at 6:47:32 AM UTC-4, Milan Bouchet-Valat wrote:
>
> Le samedi 28 mars 2015 à 21:35 -0700, Philip Tellis a écrit :
>
> I've written the following code:
>
>
>
> import Base.convert
> function convert(::Type{UTF8String}, x::Int64)
> return utf8(string(x))
> end
> println(convert(UTF8String, 10))
> println(convert(Array{UTF8String, 1}, [10]))
>
>
>
> The intent is to convert an Array of Int64 into an Array of UTF8String.
>
>
>
> The first println works correctly and converts 10 into "10"
>
>
>
> The second println should print an array of ["10"], but instead gives me
> the following error:
>
>
>
> type: arrayset: expected UTF8String, got ASCIIString
> while loading In[41], in expression starting on line 6
>
> in copy! at abstractarray.jl:149
> in convert at array.jl:220
>
>
>
> I'm using Julia 0.3.6
>
>
>
> Any idea on what I'm doing wrong?
>
> This works perfectly fine for me with 0.3.6 on Linux. Could you try at the
> Julia-REPL instead of IJulia (as you appear to be using). Can you post the
> output of versioninfo()?
>
>
> (FWIW, I'm not sure what you're trying to do is a great idea. convert is
> not defined that way because moving between numbers and strings is not
> considered a mere conversion, i.e. it should never happen automatically.
> Better give that function a different name, or use map() or a
> comprehension.)
>
>
>
You're right, it does work on the julia REPL, so there could be something
else in my running IJulia session that's interfering with it.
As to my actual problem, what I have is a DataFrame with two columns, one a
DataArray{UTF8String, 1} and the other a DataArray{Int64, 1}, and I need to
concatenate the two columns, but I can't do this because the * operator
does not work with UTF8String & Int64. I suppose one option is for me to
just cast the Int64 to a string in my SQL query that produces the dataframe.
I could also just concatenate the columns in SQL, but that would
significantly increase the amount of data sent over the network between my
db node and my julia compute node.