Skip to content

'Double to logical' error

10 messages · Bill Dunlap, Duncan Murdoch, John Tully

#
Dear colleagues
This message and any attachment are intended solely for the addressee
and may contain confidential information. If you have received this
message in error, please contact the sender and delete the email and
attachment. 

Any views or opinions expressed by the author of this email do not
necessarily reflect the views of the University of Nottingham. Email
communications with the University of Nottingham may be monitored 
where permitted by law.
#
On 06/09/2021 10:16 a.m., John Tully wrote:
That certainly looks like a tidyverse error, specifically from the 
tibble package.

Duncan Murdoch
#
What did rlang::last_error() show?

-Bill


On Mon, Sep 6, 2021 at 9:19 AM John Tully <John.Tully at nottingham.ac.uk>
wrote:

  
  
#
You get this error from this kind of operation on tibbles:

library(tibble)
t1 <- tibble(x = c(TRUE, FALSE))
t2 <- tibble(x = c(1.2, 1.3))
t1[1,] <- t2[1,]
#> Error: Assigned data `t2[1, ]` must be compatible with existing data.
#> ? Error occurred for column `x`.
#> x Can't convert from <double> to <logical> due to loss of precision.
#> * Locations: 1.

If t1 had been a data.frame instead of a tibble, this would convert t1$x 
to type double.  So it is possible some code you are using assumes 
things inheriting from class "data.frame" act like dataframes.  Or maybe 
they were just sloppy.  In any case, you might be able to fix it by 
changing single_study_df to a dataframe using

   single_study_df <- as.data.frame(single_study_df)

Duncan Murdoch
On 06/09/2021 12:34 p.m., Duncan Murdoch wrote:
#
Thank you

I ran:

```{r}
rlang::last_error()
```

Here is the output:

<error/tibble_error_assign_incompatible_type>
Assigned data `single_study_df` must be compatible with existing data.
? Error occurred for column `third_ventricle_mn`.
x Can't convert from <double> to <logical> due to loss of precision.
* Locations: 1, 2.
Backtrace:
Run `rlang::last_trace()` to see the full context.
#
Thank you Duncan

we now resolved this

However I have run into another problem with the section of script below- I am getting in reply

Error in nchar(a) : invalid multibyte string, element 1

Thanks




SCRIPT SECTION:


# fill data frame with meta results
j=1
for (indiv_meta in to_include){
  graph_results$estimate[j]=results_list[[indiv_meta]]$b
  graph_results$lb[j]=results_list[[indiv_meta]]$ci.lb
  graph_results$ub[j]=results_list[[indiv_meta]]$ci.ub
  graph_results$p[j]=results_list[[indiv_meta]]$pval
  a <- as.character(results_list[[indiv_meta]]$slab)
  #this reduces the 'k' printed on the graph for instancews where sibsamples counted as sepearte studies
  b <- substr( a, start = nchar(a) - 1 , stop = nchar(a)-1)
  num_dups = sum(b==".")/2
  graph_results$k[j]=as.integer(results_list[[indiv_meta]]$k)-num_dups
  j=j+1
}
#
And what is in the string that triggers the issue?
On 07/09/2021 9:23 a.m., John Tully wrote:
#
I?m afraid I don?t know this. I ran rlang to no avail. Any other suggestion?

Get Outlook for iOS<https://aka.ms/o0ukef>
#
Thanks.  If you can still reproduce the problem, what did
    rlang::last_trace()
report?

-Bill

On Tue, Sep 7, 2021 at 3:37 AM John Tully <John.Tully at nottingham.ac.uk>
wrote:

  
  
#
thanks

i get a red bar to the left of all of this

for (indiv_meta in to_include){
  graph_results$estimate[j]=results_list[[indiv_meta]]$b
  graph_results$lb[j]=results_list[[indiv_meta]]$ci.lb
  graph_results$ub[j]=results_list[[indiv_meta]]$ci.ub
  graph_results$p[j]=results_list[[indiv_meta]]$pval
  a <- as.character(results_list[[indiv_meta]]$slab)
  #this reduces the 'k' printed on the graph for instancews where sibsamples counted as sepearte studies
  b <- substr( a, start = nchar(a) - 1 , stop = nchar(a)-1)
  num_dups = sum(b==".")/2
  graph_results$k[j]=as.integer(results_list[[indiv_meta]]$k)-num_dups
  j=j+1
}






rlang last trace gives this

<error/tibble_error_assign_incompatible_type>
Assigned data `single_study_df` must be compatible with existing data.
? Error occurred for column `third_ventricle_mn`.
x Can't convert from <double> to <logical> due to loss of precision.
* Locations: 1, 2.
Backtrace:
     ?
  1. ??global::calc_bilat(study, region, r, df)
  2. ? ??base::`[<-`(...) aspd_funcs.r:11:2
  3. ? ??tibble:::`[<-.tbl_df`(...) aspd_funcs.r:11:2
  4. ?   ??tibble:::tbl_subassign(x, i, j, value, i_arg, j_arg, substitute(value))
  5. ?     ??tibble:::tbl_subassign_row(x, i, value, value_arg)
  6. ?       ??base::withCallingHandlers(...)
  7. ?       ??vctrs::`vec_slice<-`(`*tmp*`, i, value = value[[j]])
  8. ?         ??(function () ...
  9. ?           ??vctrs:::vec_cast.logical.double(...)
 10. ?             ??vctrs::maybe_lossy_cast(out, x, to, lossy, x_arg = x_arg, to_arg = to_arg)
 11. ?               ??base::withRestarts(...)
 12. ?               ? ??base:::withOneRestart(expr, restarts[[1L]])
 13. ?               ?   ??base:::doWithOneRestart(return(expr), restart)
 14. ?               ??vctrs:::stop_lossy_cast(...)
 15. ?                 ??vctrs:::stop_vctrs(...)
 16. ?                   ??rlang::abort(message, class = c(class, "vctrs_error"), ...)
 17. ?                     ??rlang:::signal_abort(cnd)
 18. ?                       ??base::signalCondition(cnd)
 19. ??(function (cnd) ...


?