【发布时间】:2019-11-21 17:22:01
【问题描述】:
我编写了一个函数来使用数据框中每一列的名称创建一个 div。 我希望 div 的文本成为数据框的 "labels" attr
library(shiny)
df <- data.frame(x = c(1, 2, 3), y = c(4, 5, 6), z = c(7, 8, 9))
attr(df$x, "labels") <- "a"
attr(df$y, "labels") <- "b"
attr(df$z, "labels") <- "c"
rowBlocks <- function(data, name, label)
{
div(
drag = name,
div(class = "active-title", id = name, label))
}
lapply(sort(colnames(df[,1:3])), rowBlocks,
#Rather than have "Text below,
# How do I get the df attr "label" on hover?
data = df, label = "Text")
我不知道如何表达这个问题,但我认为我需要使用具有两个功能的 lapply,而且我也在努力访问 lapply 中的 attr。
期望的输出
[[1]]
<div drag="x">
<div class="active-title" id="x">a</div>
</div>
[[2]]
<div drag="y">
<div class="active-title" id="y">b</div>
</div>
[[3]]
<div drag="z">
<div class="active-title" id="z">c</div>
</div>
我尝试使用label = attr(df$name, "label"),但它按字面意思解释名称,而不是使用实际的名称变量...感谢任何帮助!
【问题讨论】:
-
你可以在函数
rowBlocks中使用attr(data[,name], "labels") -
div函数不是 Base R。它是来自包还是您在某个地方定义的?请在您的问题中包含此信息以使其可重现。 -
糟糕!谢谢你的收获 - 我正在尽可能多地剥离我的闪亮应用程序以使其成为一个重复!