我正在编写一个R包“ my_package”,该包在DESCRIPTION文件中具有这些导入:
web.config
这是我的.libPaths():
Imports: jsonlite,
tibble,
shiny,
ggplot2,
plotly (>= 4.5.6.9000),
dplyr
问题出在这里
当我安装“ my_package”时,“ plotly”包位于:
[1] "C:/Users/some_user/Documents/R/win-library/3.5" "C:/rhome/r-3.5.1/library"
如果“ plotly”程序包保留在那里,一切都将正常工作。但是,如果我将“ plotly”包移至.libPaths()上的其他路径:
"C:/rhome/r-3.5.1/library"
然后尝试从“ my_package”中调用使用“ plotly”中函数的函数,这是错误消息:
"C:/Users/some_user/Documents/R/win-library/3.5"
这是我的实验:
我尝试了相反的操作,并将“ plotly”程序包最初放置在“ C:/Users/some_user/Documents/R/win-library/3.5”中,然后安装了“ my_package”。就像在它起作用之前,直到我将“ plotly”包移至“ C:/rhome/r-3.5.1/library”。错误消息是相反的:
错误:无法使用参数ERROR: Couldn't normalize path in `addResourcePath`, with arguments: `prefix` = 'plotly-binding-4.8.0'; `directoryPath` = 'C:/rhome/r-3.5.1/library/plotly/htmlwidgets'
='plotly-binding-4.8.0'来规范addResourcePath
中的路径。 prefix
='C:/Users/some_user/Documents/R/win-library/3.5/plotly/htmlwidgets'
我尝试了另一个与“ my_package”导入的软件包相同的事情,即“ shiny”。这里没有问题。安装“ my_package”后,“ shiny”位于何处都没有关系。只要在.libPath()的两个路径中的任何一个路径中都包含“ shiny”,“ my_package”就可以正常工作。
因此看来,“ plotly”的路径绝对是在安装时设置的。
答案 0 :(得分:0)
上传到library(data.table)
library(dplyr)
#function
mn <- function (x){
return(list(median = median(x), mean = mean(x)))
}
#bigger data
g1 = data.frame(
gene = gl(1e5, 1e2),
value = rnorm(1e8)
)
f_dt <- function() setDT(g1)[, mn(value), by = gene]
f_dp <- function() g1 %>% group_by(gene) %>% do(data.frame(t(mn(.$value)))) %>% data.frame()
system.time(f_dt())
#> user system elapsed
#> 11.00 1.53 15.35
system.time(f_dp())
#> user system elapsed
#> 38.09 0.37 39.94
时遇到了类似的问题。我正在缓存图以缩短默认情况下最初显示的图的加载时间。它可以在我的本地计算机上完美运行,但是随后在shinyapps.io
上失败了,大概是因为您提到的原因。程序包在其服务器上的其他位置加载。有一个解决方法。一旦在R中生成了图,就可以手动设置相关性。在shinyapps.io上,这些是可以使用的绝对路径。您可以针对自己的用例进行编辑。
shinyapps.io
plotObject$dependencies[[1]]$src$file = "/opt/R/3.3.2/lib/R/library/plotly/htmlwidgets/lib/typedarray"
plotObject$dependencies[[2]]$src$file = "/opt/R/3.3.2/lib/R/library/crosstalk/lib/jquery"
plotObject$dependencies[[3]]$src$file = "/opt/R/3.3.2/lib/R/library/crosstalk/www"
plotObject$dependencies[[4]]$src$file = "/opt/R/3.3.2/lib/R/library/plotly/htmlwidgets/lib/plotlyjs"
plotObject$dependencies[[5]]$src$file = "/opt/R/3.3.2/lib/R/library/plotly/htmlwidgets/lib/plotlyjs"
这是plotObject
生成的图。