waffle icon indicating copy to clipboard operation
waffle copied to clipboard

Problems with data frames

Open ivanhigueram opened this issue 6 years ago • 9 comments

Hello,

I'm trying to use a data.frame as a parts argumento to the waffle function, but I'm getting a object type error. Using your example to reproduce the error the problem persists.

> parts <- data.frame(
+   names = LETTERS[1:4],
+   vals = c(80, 30, 20, 10)
+ )
> 
> waffle(parts, rows = 8)
Error in FUN(X[[i]], ...) : 
  (list) object cannot be coerced to type 'double'

Any idea on what's happening? The only way to get it working is to pass a vector.

ivanhigueram avatar Jun 29 '18 15:06 ivanhigueram

are you using the GH version? I just tried it and it works w/o issue.

hrbrmstr avatar Jul 12 '18 19:07 hrbrmstr

Nope, I install the package from CRAN, not from GH.

ivanhigueram avatar Jul 13 '18 02:07 ivanhigueram

Installing the Github version fixed this issue for me

Breza avatar Jul 13 '18 14:07 Breza

Unfortunately, installing from Github devtools did not fix this for me. I have version 0.9.1 and I'm getting that same error.

critmcdonald avatar May 08 '19 01:05 critmcdonald

Can you post your full session info?

I literally just tried it again (R 3.6.0 & did devtools::install_github("hrbrmstr/waffle")) and it does not produce the same error (I get a chart). - thx

On May 7, 2019, at 9:45 PM, Christian McDonald [email protected] wrote:

Unfortunately, installing from Github devtools did not fix this for me. I have version 0.9.1 and I'm getting that same error.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

hrbrmstr avatar May 08 '19 10:05 hrbrmstr

I second this issue 😭

parts <- data.frame(
    names = LETTERS[1:4],
    vals = c(80, 30, 20, 10)
)
waffle(parts, rows = 8)
Error in FUN(X[[i]], ...) : 
  (list) object cannot be coerced to type 'double'

sessionInfo()
Error: $ operator is invalid for atomic vectors
In addition: Warning message:
In FUN(X[[i]], ...) :
  DESCRIPTION file of package 'waffle' is missing or broken

Usually on my laptop I would delete the package from .libPath() and re-install the dev version from Github; however, I'm working from the work server and don't have sudo.

Given that my RStudio server shows this:

.libPaths()
[1] "/exports/meaney.lab/moldach/R/x86_64-pc-linux-gnu-library/3.5"
[2] "/usr/lib64/R/library"                                         
[3] "/opt/R/3.5.3/lib64/R/library"

Where the top PATH is my personal env and the other two I cannot touch

How can I tell R which PATH I would like to load the Github version of the package (my personal env) in the meantime until I can file an IT request?

moldach avatar May 15 '19 00:05 moldach

waffle(parts, rows = 8) Error in FUN(X[[i]], ...) : (list) object cannot be coerced to type 'double'

sessionInfo() Error: $ operator is invalid for atomic vectors In addition: Warning message: In FUN(X[[i]], ...) : DESCRIPTION file of package 'waffle' is missing or broken

Weird a session restart has solved the issue?

Including my sessionInfo() (which actually prints this time?) in-case this helps anyone else:

sessionInfo()
R version 3.5.3 (2019-03-11)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: CentOS Linux 7 (Core)

Matrix products: default
BLAS/LAPACK: /share/apps/anaconda2/lib/libopenblasp-r0.3.5.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods  
[7] base     

other attached packages:
[1] waffle_0.9.1   ggplot2_3.1.1  usethis_1.5.0  devtools_2.0.2

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.1         RColorBrewer_1.1-2 compiler_3.5.3    
 [4] pillar_1.4.0       plyr_1.8.4         prettyunits_1.0.2 
 [7] remotes_2.0.4      tools_3.5.3        extrafont_0.17    
[10] testthat_2.1.1     digest_0.6.18      pkgbuild_1.0.3    
[13] pkgload_1.0.2      memoise_1.1.0.9000 tibble_2.1.1      
[16] gtable_0.3.0       pkgconfig_2.0.2    rlang_0.3.4       
[19] cli_1.1.0          rstudioapi_0.10    curl_3.3          
[22] Rttf2pt1_1.3.7     gridExtra_2.3      stringr_1.4.0     
[25] withr_2.1.2        dplyr_0.8.0.1      desc_1.2.0        
[28] fs_1.2.7           rprojroot_1.3-2    grid_3.5.3        
[31] tidyselect_0.2.5   glue_1.3.1         R6_2.4.0          
[34] processx_3.3.0     sessioninfo_1.1.1  extrafontdb_1.0   
[37] callr_3.2.0        purrr_0.3.2        magrittr_1.5      
[40] backports_1.1.4    scales_1.0.0       ps_1.3.0          
[43] assertthat_0.2.1   colorspace_1.4-1   labeling_0.3      
[46] stringi_1.4.3      lazyeval_0.2.2     munsell_0.5.0     
[49] crayon_1.3.4  

Oh also since your a very R savvy person if you do know an answer to:

Given that my RStudio server shows this:

.libPaths()
[1] "/exports/meaney.lab/moldach/R/x86_64-pc-linux-gnu-library/3.5"
[2] "/usr/lib64/R/library"                                         
[3] "/opt/R/3.5.3/lib64/R/library"

Where the top PATH is my personal env and the other two I cannot touch

How can I tell R which PATH I would like to load the Github version of the package (my personal env) in the meantime until I can file an IT request?

I'd love to hear it 😊

moldach avatar May 15 '19 00:05 moldach

Same issue here

> sessionInfo()
R version 3.4.4 (2018-03-15)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.2 LTS

Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/atlas/libblas.so.3.10.3
LAPACK: /usr/lib/x86_64-linux-gnu/atlas/liblapack.so.3.10.3

locale:
 [1] LC_CTYPE=en_US.UTF-8          LC_NUMERIC=C                 
 [3] LC_TIME=en_US.UTF-8           LC_COLLATE=en_US.UTF-8       
 [5] LC_MONETARY=en_US.UTF-8       LC_MESSAGES=en_US.UTF-8      
 [7] LC_PAPER=en_US.UTF-8          LC_NAME=en_US.UTF-8          
 [9] LC_ADDRESS=en_US.UTF-8        LC_TELEPHONE=en_US.UTF-8     
[11] LC_MEASUREMENT=en_US.UTF-8    LC_IDENTIFICATION=en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] waffle_1.0.0         ggforce_0.2.0        stringr_1.3.1       
[4] rChoiceDialogs_1.0.6 rJava_0.9-10         ggplot2_3.1.0       
[7] dplyr_0.8.0.1       

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.1         lattice_0.20-35    prettyunits_1.0.2  ps_1.2.0          
 [5] zoo_1.8-4          assertthat_0.2.0   zeallot_0.1.0      rprojroot_1.3-2   
 [9] digest_0.6.18      utf8_1.1.4         R6_2.3.0           plyr_1.8.4        
[13] backports_1.1.2    pillar_1.4.0       rlang_0.3.4        curl_3.3          
[17] lazyeval_0.2.1     rstudioapi_0.8     extrafontdb_1.0    callr_3.0.0       
[21] desc_1.2.0         labeling_0.3       devtools_2.0.1     extrafont_0.17    
[25] polyclip_1.9-1     munsell_0.5.0      compiler_3.4.4     pkgconfig_2.0.2   
[29] base64enc_0.1-3    pkgbuild_1.0.2     tidyselect_0.2.5   tibble_2.1.1      
[33] gridExtra_2.3      fansi_0.4.0        crayon_1.3.4       withr_2.1.2       
[37] MASS_7.3-49        grid_3.4.4         Rttf2pt1_1.3.7     gtable_0.2.0      
[41] magrittr_1.5       scales_1.0.0       cli_1.1.0          stringi_1.2.4     
[45] farver_1.1.0       reshape2_1.4.3     fs_1.2.6           remotes_2.0.2     
[49] testthat_2.1.1     vctrs_0.1.0        cowplot_0.9.4      RColorBrewer_1.1-2
[53] tools_3.4.4        glue_1.3.0         tweenr_1.0.1       purrr_0.3.2       
[57] processx_3.2.0     pkgload_1.0.2      colorspace_1.3-2   sessioninfo_1.1.0 
[61] memoise_1.1.0      usethis_1.5.0     

matiasandina avatar May 19 '19 21:05 matiasandina

Shout out to Miles McBain for solving this one: https://milesmcbain.xyz/hacking-r-library-paths/

This is how my PATHS look like

.libPaths()
[1] "/exports/meaney.lab/moldach/R/x86_64-pc-linux-gnu-library/3.5"
[2] "/usr/lib64/R/library"                                         
[3] "/opt/R/3.5.3/lib64/R/library"

Now I try and load the package with library(waffle) and check sessionInfo() but I see it's loaded version 0.9.1 from /usr/lib64/R/library

Let's say my IT specialist is away for the day, or that they are worried about updating the package since it could have unintended affects on other packages. So they tell me to run devtools::install_github("hrbrmstr/waffle") to install the package into my local library.

Okay so once that's done I want to detach the old version with detach("package:waffle", unload=TRUE) then use the following function to force R to load the library from my local library:

set_lib_paths <- function(lib_vec) {

  lib_vec <- normalizePath(lib_vec, mustWork = TRUE)

  shim_fun <- .libPaths
  shim_env <- new.env(parent = environment(shim_fun))
  shim_env$.Library <- character()
  shim_env$.Library.site <- character()

  environment(shim_fun) <- shim_env
  shim_fun(lib_vec)

}

set_lib_paths("/exports/meaney.lab/moldach/R/x86_64-pc-linux-gnu-library/3.5")
library(waffle)
sessionInfo()

moldach avatar Jul 24 '19 19:07 moldach