我正在使用R leaflet.minicharts为多个输入文件的每一个创建绘图。我想为每个小型图表中的每个饼图或条形图创建自定义标签,但是代码遇到了麻烦。
我有一个类似于以下内容的数据帧(df):
location grp1 grp2 grp3 grp4 1 loc1 1 0 0 0 2 loc2 0 5 0 1 3 loc3 1 0 3 0 4 loc4 0 2 2 2 5 loc5 0 1 0 7
并希望为每个遵循此格式的绘图中的每个饼图(或条形图)创建一个弹出标签:
loc1 grp1: 1 grp2: 0 grp3: 0 grp4: 0
根据另一篇文章(Leaflet for R: Display several data rows in popup),我发现标签格式应如下:
my_popups <- df %>% group_by(location) %>% mutate(popup = paste0("<h3>", location, paste("grp1:", grp1, "<b>", "grp2:", grp2, "<b>", "grp3:", grp3, "<b>", "grp4:", grp4, "<b>", collapse = "<br>"))) %>% pull(popup)
但是我如何自动化my_popups来为几个不同的输入文件生成自定义标签,这些文件的grp级别会有所不同(例如,此处显示的是grp1到grp4,但是我也输入了grp1到grp5,依此类推)。我不想为每个输入手动输入此代码的“粘贴”部分。
我创建了一个带有数据框列名称一部分的向量,如下所示:
[1] "grp1" "grp2" "grp3" "grp4"
我在想应该有一种方法可以将其粘贴到my_popups的正确格式中,但是还不确定如何进行。任何提示都会有所帮助!
答案 0 :(得分:0)
我认为这可能可以解决问题,当然,可以进行一些小的更改:
cols <- colnames(df)
coln <- cols[grepl("grp", cols)]
coln <- paste0("<b>",coln[2:length(coln)],":" )
coln<-c(coln, "<b>")
df$popup <- apply(df[,-1],1,paste,coln,collapse="")
df %>% mutate(popup = paste0("<h3>", location,"grp1:", popup))
一些小调整,以获取所需的确切格式@nrcombs:
cols <- colnames(df)
coln <- cols[grepl("grp", cols)]
coln <- paste0("<br>",coln[2:length(coln)],": " )
coln<-c(coln, "<br>")
df$popup <- apply(df[,-1],1,paste,coln,collapse="")
df %>% mutate(popup = paste0("<h3>", location, "</h3><br>", "grp1: ", popup))