Пути к файлам Drake в Windows перепутались

Я пытался запустить проект с Drake. make(plan) проходит нормально, но после последнего пункта плана я получаю ошибку.

Error in file(private$total_file, "r+w") : cannot open connection
Additional Warning:
In file(private$total_file, "r+w") :
'C:\R_project\.drake/drake/history/total' cannot open file: Invalid argument

Я работаю в системе Windows (с \\ разделителями путей). Обычно R использует соглашение о путях / и прекрасно справляется с этим. Но как-то здесь путаны пути, и я не знаю почему.

Известно ли это и есть ли обходной путь? Кто-нибудь знает, где возникает ошибка, чтобы я мог исправить ее в коде Drake?

Спасибо!

Пример кода:

plan2 = drake_plan(
  loadRequirements =   {
    library(ggplot2)
  }
)
vis_drake_graph(plan2)
make(plan2)

Вывод traceback ()

> traceback()
20: file(private$total_file, "r+w")
19: private$txtq_inc_total(length(out))
18: private$txtq_push(title = title, message = message)
17: force(code)
16: private$txtq_exclusive(private$txtq_push(title = title, message = message))
15: config$cache$history$push(title = target, message = meta_hash)
14: store_meta(target = target, value = value, meta = meta, hash = hash, 
        config = config)
13: store_item(target = target, value = value, meta = meta, config = config)
12: store_outputs(target = target, value = value, meta = meta, config = config)
11: conclude_build_impl.default(value, target, meta, config)
10: conclude_build_impl(value, target, meta, config)
9: conclude_build(build, config)
8: local_build(target = targets[1], config = config, downstream = targets[-1])
7: loop_check(config)
6: drake_backend_loop(config)
5: drake_backend(config)
4: run_backend(config)
3: process_targets(config)
2: make_impl(config)
1: make(plan)

person marco    schedule 28.07.2020    source источник
comment
Трудно строить предположения, используя только ошибку и предупреждение, указанные выше. Вы бы разместили небольшой автономный воспроизводимый пример, чтобы я тоже мог сгенерировать эту ошибку? Кроме того, не могли бы вы опубликовать содержимое traceback(), чтобы помочь определить причину ошибки?   -  person landau    schedule 28.07.2020
comment
Ну конечно; естественно. Я добавил код к своему вопросу. Спасибо, что указали.   -  person marco    schedule 28.07.2020
comment
Попробуйте напечатать getwd () или here :: here (), чтобы узнать, где, по мнению сеанса R, он работает.   -  person itsMeInMiami    schedule 28.07.2020
comment
Я бы не стал помещать вызовы моей библиотеки в цель. Я не знаю, проблема ли в этом, но думаю, что это вызовет массу проблем.   -  person Richard Telford    schedule 28.07.2020
comment
getwd () сообщает мне мой wd (с правильным / -pathing). И я не знал о пакете here, но я не вижу его смысла прямо сейчас и вообще не вижу, почему это могло бы мне помочь.   -  person marco    schedule 28.07.2020
comment
при замене library(ggplot) на print(1:10) получаю ту же ошибку. Но спасибо, что указали.   -  person marco    schedule 28.07.2020
comment
Я обнаружил, что ошибка не возникает при выполнении 2 раза. Во втором исполнении он сообщает мне, что все цели уже обновлены.   -  person marco    schedule 28.07.2020


Ответы (1)


На моей машине с Windows 10 ваш пример работает без ошибок. Возможно, вы используете старые версии drake и txtq. Если да, вы можете обновить их с помощью install.packages(). В противном случае make() с history = FALSE должно избежать проблемы.

library(drake)
plan <- drake_plan(
  loadRequirements = {
    library(ggplot2)
  }
)
vis_drake_graph(plan)

make(plan)
#> i Consider drake::r_make() to improve robustness.
#> > target loadRequirements

Создано 28 июля 2020 г. пакетом REPEX (v0.3.0)

Session info
sessionInfo()
#> R version 4.0.2 (2020-06-22)
#> Platform: x86_64-w64-mingw32/x64 (64-bit)
#> Running under: Windows 10 x64 (build 18363)
#> 
#> Matrix products: default
#> 
#> locale:
#> [1] LC_COLLATE=English_United States.1252 
#> [2] LC_CTYPE=English_United States.1252   
#> [3] LC_MONETARY=English_United States.1252
#> [4] LC_NUMERIC=C                          
#> [5] LC_TIME=English_United States.1252    
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#> [1] ggplot2_3.3.2 drake_7.12.4 
#> 
#> loaded via a namespace (and not attached):
#>  [1] storr_1.2.1       progress_1.2.2    tidyselect_1.1.0  xfun_0.16        
#>  [5] purrr_0.3.4       colorspace_1.4-1  vctrs_0.3.2       generics_0.0.2   
#>  [9] htmltools_0.5.0   yaml_2.2.1        rlang_0.4.7       pillar_1.4.6     
#> [13] txtq_0.2.3        glue_1.4.1        withr_2.2.0       lifecycle_0.2.0  
#> [17] stringr_1.4.0     munsell_0.5.0     gtable_0.3.0      visNetwork_2.0.9 
#> [21] htmlwidgets_1.5.1 evaluate_0.14     knitr_1.29        callr_3.4.3      
#> [25] ps_1.3.3          curl_4.3          parallel_4.0.2    fansi_0.4.1      
#> [29] highr_0.8         Rcpp_1.0.5        backports_1.1.8   scales_1.1.1     
#> [33] filelock_1.0.2    webshot_0.5.2     jsonlite_1.7.0    mime_0.9         
#> [37] hms_0.5.3         digest_0.6.25     stringi_1.4.6     processx_3.4.3   
#> [41] dplyr_1.0.0       grid_4.0.2        cli_2.0.2         tools_4.0.2      
#> [45] magrittr_1.5      base64url_1.4     tibble_3.0.3      crayon_1.3.4     
#> [49] pkgconfig_2.0.3   ellipsis_0.3.1    xml2_1.3.2        prettyunits_1.1.1
#> [53] lubridate_1.7.9   httr_1.4.2        assertthat_0.2.1  rmarkdown_2.3    
#> [57] R6_2.4.1          igraph_1.2.5      compiler_4.0.2
person landau    schedule 28.07.2020
comment
Действительно history = FALSE позволяет избежать проблемы. Для меня сейчас это нормально. Большое тебе спасибо. PS: r_make(plan2) Стиль вызывал ошибки, и моя машина была настроена совсем недавно, поэтому все обновлено. - person marco; 28.07.2020