R中稀奇古怪的代码报错

2023-11-13 10:44:00 浏览数 (2)

❝最近偶尔遇到个别朋友询问运行代码报错的情况,各种情况都有但是长久的情景几乎是一致。本节来解答一下遇到这些该如何执行。个人观点仅供参考 ❞

案例1

代码语言:javascript复制
rlang::last_trace()

没有明显的错误出现,但是却有跟rlang相关的字符,这多半是tidyverse版本的问题,此时重新安装tidyverse即可

案例2

代码语言:javascript复制
Error in voronoi_treemap(hoursPerDayCombined ~ Category   Subcategory,  : 
  could not find function "voronoi_treemap"

遇到上述情况多半是未加载需要的包,可通过网络检索该函数即可得知所对应的R包

案例3

❝一堆警告信息就是报错不出图,遇到这种情况多半是所使用的R包作者进行了更新,这种情况尤其是在「github」上发布的R包常出现,因此可去作者github主页查看最新的更新情况,一般都会有案例说明。 ❞

案例4

❝毫无头绪的报错,数据处理后就是无结果反馈。这种情况就比较复杂了,有可能是R包之间函数冲突,有可能是版本问题,更甚者是电脑性能的问题。下面举个实际例子来进行说明 ❞

案例图

此图为小编2023年9月25日公众号发布的一篇文档图,此次在原有代码的基础上做了简化,代码如下

加载R包

代码语言:javascript复制
library(tidyverse)
library(ggtext)
library(glue)
#install.packages("rcartocolor")
library(rcartocolor)
# devtools::install_github("AllanCameron/VoronoiPlus")
library(VoronoiPlus)

导入数据

代码语言:javascript复制
all_countries <- read_csv("all_countries.csv")
country_regions <- read_csv("country_regions.csv")

数据清洗

代码语言:javascript复制
au_data <- all_countries |> 
  select(Category, Subcategory, hoursPerDayCombined, country_iso3) |> 
  left_join(country_regions, by = "country_iso3") |> 
  filter(country_name == "Australia") |> 
  select(Category, Subcategory, hoursPerDayCombined)

au_vor <- voronoi_treemap(hoursPerDayCombined ~ Category   Subcategory,
                          data = au_data)

set.seed(1234)
groups <- filter(au_vor, level == 1)

subgroups <- filter(au_vor, level == 2) |> 
  group_by(group) |> 
  mutate(alpha = runif(1, 0, 0.6)) |> 
  ungroup()

定义颜色

代码语言:javascript复制
cols_vec = rcartocolor::carto_pal(length(unique(au_data$Category)) 1, "Prism")[1:length(unique(au_data$Category))]
names(cols_vec) = unique(au_data$Category)

数据可视化

代码语言:javascript复制
ggplot()  
  geom_polygon(data = groups,mapping = aes(x = x, y = y, group = group, fill = group),
               colour = "white",linewidth = 5)  
  geom_polygon(data = subgroups,
               mapping = aes(x = x, y = y, group = group, alpha = alpha),
               fill = "#fafafa",colour = "#fafafa",linewidth = 0.3)  
  geom_text(data = groups %>% group_by(group) %>% 
              summarize(x = mean(x), y = mean(y)),
            aes(label=group,x,y),color="black")  
  scale_alpha_identity()  
  scale_fill_manual(values = cols_vec)  
  coord_equal()  
  theme_void(base_size = 12)  
  theme(legend.position = "non",
    plot.background = element_rect(fill = "white", colour = "white"),
    panel.background = element_rect(fill = "white", colour = "white"),
    plot.margin = margin(10, 10, 10, 10))

代码问题

❝最近有朋友反馈此图运行代码有问题,但是部分朋友表示可以正常出图,小编很是疑惑;一番检查后终于是找到了问题所在,此段代码小编在一台高性能电脑上可以丝滑出图,但是放到5年前的老电脑上就会出现如下报错,果然R代码的报错真是难以让人琢磨,「也许这就是提示该换电脑了」

0 人点赞