Make sure you are actually applying the function you have pasted (you might have changed the definition of
substring_ and not reloaded it), as:
- the method you describe does not return
- the method will not get called by
substring_.(train[:col],2), unless you use 32-bit Julia;
Now regarding your function I would recommend to rewrite it as:
function substring_(x::String,i::Int) # changed Int32 to Int so that we use the default integer type on your machine
return first(x, 1) # this gives you a string containing the first character of x
return chop(x, head=1, tail=0) # this is a safe way to remove the first character from x; your code would fail on non-ASCII characters
substring_.(train.col,2) # note that in DataFrames.jl you can access columns by name as a property
Also in Julia a standard way to indicate a missing value is
missing, so you might consider using this value instead of
"NA" in your code (“NA” might be OK for your purposes, so I did not change this in the code. However, note that if you write
substring_("aNA", 2) you also get
"NA" returned and then you are not able to distinguish these cases).
If some additional explanations of the above would be helpful please let me know.