对于某些背景,我正在R中创建一个具有下拉样式过滤器的绘图,并且要创建过滤器,我需要将所有值传递给函数。
我的问题不仅适用于情节,还适用于其他情况。
本质上,我传递的每个参数都是相同的,但索引会变化([1]到[8])。有没有更简洁的书写方式?当我创建具有30多个下拉选项的绘图时,这将派上用场。
buttons = list(
unique(df$FAC_DESCRIPTION)[1],
unique(df$FAC_DESCRIPTION)[2],
unique(df$FAC_DESCRIPTION)[3],
unique(df$FAC_DESCRIPTION)[4],
unique(df$FAC_DESCRIPTION)[5],
unique(df$FAC_DESCRIPTION)[6],
unique(df$FAC_DESCRIPTION)[7],
unique(df$FAC_DESCRIPTION)[8]
)
编辑:我上面粘贴的代码实际上是我实际上想做的事情的简化版本,当我使用[1:8]方法时,它不起作用。这更接近实际代码(仅缩短到前三个元素,而不是8:
buttons = list(
list(method = "r",args = list("t[0].value", unique(df$FAC)[1]),label =unique(df$FAC)[1]),
list(method = "r",args = list("t[0].value", unique(df$FAC)[2]),label =unique(df$FAC)[2]),
list(method = "r",args = list("t[0].value", unique(df$FAC)[3]),label =unique(df$FAC)[3])
)
但是,当我尝试以下方法时,它不起作用-是因为我在两个地方使用它了吗?
buttons = list(
list(method = "r",args = list("t[0].value", unique(df$FAC)[1:3]),label =unique(df$FAC)[1:3])
)
我也尝试过:
dropdown_options <- lapply(1:5, function(x)list(paste('method = "r", args = list("transforms[0].value", unique(df$FAC)[',x,']),label = unique(df$FAC)[',x,']',sep='')))
buttons = do.call(list, dropdown_options)
但是那也不起作用。
答案 0 :(得分:0)
您的lapply
尝试已经结束,但是您需要使用常规函数,而不是paste
。 unique(df$FAC)[x]
不是原始代码中的字符串,因此它不应该是lapply
中的字符串。
dropdown_options <- lapply(1:5, function(x) {
list(method = "r",
args = list(
"t[0].value",
unique(df$FAC)[x]),
label = unique(df$FAC)[x]
)}
)
这应该是等效的,尽管除非您共享一些我无法测试的示例df$FAC
数据。