我想rhandsontable在shiny应用程序中将颜色选择器作为列类型.colourInput()从colourpicker包中使用,我可以添加颜色选择器作为独立输入,从HTML标记创建它们,或将它们放在HTML表中(参见下面的示例代码).是否可以将颜色选择器输入控件添加到rhandsontable列?
最终目标是一个应用程序,允许用户从电子表格(如MS Excel)复制数据并粘贴到rhandsontable对象中,包括指定颜色名称或十六进制代码的文本.用户可以通过覆盖文本或通过光标操作从选择器中选择颜色来编辑颜色.该应用程序稍后将采用指定颜色的那些输入,执行计算和图形结果.
下面是一些示例代码,显示两次尝试失败.任何意见,将不胜感激.另外,我对JavaScript一无所知.该colourpicker和rhandsontable护身符是优秀的资源,但我仍然无法弄清楚.
最小的例子
library(shiny); library(rhandsontable); library(colourpicker)
hotDF <- data.frame(Value = 1:4, Status = TRUE, Name = LETTERS[1:4],
Date = seq(from = Sys.Date(), by = "days", length.out = 4),
Colour = sapply(1:4, function(i) {
paste0(
'<div class="form-group shiny-input-container"
data-shiny-input-type="colour">
<input id="myColour',i,'" type="text"
class="form-control shiny-colour-input" data-init-value="#FFFFFF"
data-show-colour="both" data-palette="square"/>
</div>'
)}), stringsAsFactors = FALSE)
testColourInput <- function(DF){
ui <- shinyUI(fluidPage( rHandsontableOutput("hot") ))
server <- shinyServer(function(input, …Run Code Online (Sandbox Code Playgroud) 在Excel中,通过引用较早的单元格,可以轻松地对先前单元格执行计算.例如,从初始值100(步骤= 0)开始,每个下一步将0.9 * previous + 9简单地通过从第一个单元格向下拖动公式栏(步骤= 1).接下来的10个步骤如下:
step value
[1,] 0 100.00000
[2,] 1 99.00000
[3,] 2 98.10000
[4,] 3 97.29000
[5,] 4 96.56100
[6,] 5 95.90490
[7,] 6 95.31441
[8,] 7 94.78297
[9,] 8 94.30467
[10,] 9 93.87420
[11,] 10 93.48678
Run Code Online (Sandbox Code Playgroud)
我环顾网络和StackOverflow,我能想到的最好的是for循环(下图).有更有效的方法吗?是否可以避免for循环?这似乎是R中的大部分功能(如cumsum,diff,apply,等)对现有的载体,而不是从以前的即时计算新值的工作.
#for loop. This works
value <- 100 #Initial value
for(i in 2:11) {
current <- 0.9 * value[i-1] + 9
value <- append(value, current)
} …Run Code Online (Sandbox Code Playgroud)