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:> On 06/09/2021 10:16 a.m., John Tully wrote: >> Dear colleagues >>> >>> in conducting a meta-analysis (of MRI data) I am running into the repeated issue: >>> >>> Error: Assigned data `single_study_df` must be compatible with existing data. ? Error occurred for column `accumbens_sd`. x Can't convert from <double> to <logical> due to loss of precision. * Locations: 1, 2. Run `rlang::last_error()` to see where the error occurred. > > That certainly looks like a tidyverse error, specifically from the > tibble package. > > Duncan Murdoch > >>> >>> This follows the commands >>> >>> for (region in regions){ >>> for (study in unique(df$studyid)){ >>> single_study_df <- df %>% filter(studyid==study) >>> if (is.na(single_study_df[sprintf('%s_mn', region)][[1]]) & !is.na(single_study_df[sprintf('%s_mn_l', region)])){ >>> df <- calc_bilat(study, region, r, df) >>> } >>> } >>> } >>> >>> >>> My colleague (cc'd) believed it may be an issue with tidyverse version, however using an older version (1.2.1), the issue persists. note 'accumbens' is the first of many columns so I suspect this is why it flags this up. >>> >>> I would greatly value your input on this matter >>> >>> Kind regards >>> >>> John Tully >>> >>> >>> >>> >> >> >> >> >> 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. >> >> >> >> >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. >> >
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
}
________________________________
From: Duncan Murdoch <murdoch.duncan at gmail.com>
Sent: Monday, September 6, 2021 5:49 PM
To: John Tully <mszjt1 at exmail.nottingham.ac.uk>; r-help at
R-project.org <r-help at R-project.org>
Cc: McCutcheon, Robert <robert.mccutcheon at kcl.ac.uk>
Subject: Re: [R] 'Double to logical' error
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:> On 06/09/2021 10:16 a.m., John Tully wrote:
>> Dear colleagues
>>>
>>> in conducting a meta-analysis (of MRI data) I am running into the
repeated issue:
>>>
>>> Error: Assigned data `single_study_df` must be compatible with
existing data. ? Error occurred for column `accumbens_sd`. x Can't convert
from <double> to <logical> due to loss of precision. * Locations: 1,
2. Run `rlang::last_error()` to see where the error occurred.
>
> That certainly looks like a tidyverse error, specifically from the
> tibble package.
>
> Duncan Murdoch
>
>>>
>>> This follows the commands
>>>
>>> for (region in regions){
>>> for (study in unique(df$studyid)){
>>> single_study_df <- df %>% filter(studyid==study)
>>> if (is.na(single_study_df[sprintf('%s_mn',
region)][[1]]) & !is.na(single_study_df[sprintf('%s_mn_l',
region)])){
>>> df <- calc_bilat(study, region, r, df)
>>> }
>>> }
>>> }
>>>
>>>
>>> My colleague (cc'd) believed it may be an issue with tidyverse
version, however using an older version (1.2.1), the issue persists. note
'accumbens' is the first of many columns so I suspect this is why it
flags this up.
>>>
>>> I would greatly value your input on this matter
>>>
>>> Kind regards
>>>
>>> John Tully
>>>
>>>
>>>
>>>
>>
>>
>>
>>
>> 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.
>>
>>
>>
>>
>>
>> [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
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.
[[alternative HTML version deleted]]
And what is in the string that triggers the issue? On 07/09/2021 9:23 a.m., John Tully wrote:> 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 > } > > > > > ------------------------------------------------------------------------ > *From:* Duncan Murdoch <murdoch.duncan at gmail.com> > *Sent:* Monday, September 6, 2021 5:49 PM > *To:* John Tully <mszjt1 at exmail.nottingham.ac.uk>; r-help at R-project.org > <r-help at R-project.org> > *Cc:* McCutcheon, Robert <robert.mccutcheon at kcl.ac.uk> > *Subject:* Re: [R] 'Double to logical' error > 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: >> On 06/09/2021 10:16 a.m., John Tully wrote: >>> Dear colleagues >>>> >>>> in conducting a meta-analysis (of MRI data) I am running into the repeated issue: >>>> >>>> Error: Assigned data `single_study_df` must be compatible with existing data. ? Error occurred for column `accumbens_sd`. x Can't convert from <double> to <logical> due to loss of precision. * Locations: 1, 2. Run `rlang::last_error()` to see where the error occurred. >> >> That certainly looks like a tidyverse error, specifically from the >> tibble package. >> >> Duncan Murdoch >> >>>> >>>> This follows the commands >>>> >>>> for (region in regions){ >>>>????? for (study in unique(df$studyid)){ >>>>??????? single_study_df <- df %>% filter(studyid==study) >>>>??????? if (is.na(single_study_df[sprintf('%s_mn', region)][[1]]) & !is.na(single_study_df[sprintf('%s_mn_l', region)])){ >>>>????????? df <- calc_bilat(study, region, r, df) >>>>??????? } >>>>????? } >>>> } >>>> >>>> >>>> My colleague (cc'd) believed it may be an issue with tidyverse version, however using an older version (1.2.1), the issue persists. note 'accumbens' is the first of many columns so I suspect this is why it flags this up. >>>> >>>> I would greatly value your input on this matter >>>> >>>> Kind regards >>>> >>>> John Tully >>>> >>>> >>>> >>>> >>> >>> >>> >>> >>> 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. >>> >>> >>> >>> >>> >>>?????? [[alternative HTML version deleted]] >>> >>> ______________________________________________ >>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >>> https://stat.ethz.ch/mailman/listinfo/r-help > <https://stat.ethz.ch/mailman/listinfo/r-help> >>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > <http://www.R-project.org/posting-guide.html> >>> and provide commented, minimal, self-contained, reproducible code. >>> >> > > 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. > > >