所以假设我想取向量X = 2*1:N并将e提高到每个元素的指数.(是的,我认识到这样做的最好方法是简单地通过向量化exp(X),但重点是将循环与sapply进行比较).好吧,我通过逐步尝试三个方法(一个用于for循环,两个用不同的方式应用了sapply)和不同的样本大小并测量相应的时间来测试.然后,我绘制每种方法的样本大小N对时间t.
每种方法用"#####"表示.
k <- 20
t1 <- rep(0,k)
t2 <- rep(0,k)
t3 <- rep(0,k)
L <- round(10^seq(4,7,length=k))
for (i in 1:k) {
X <- 2*1:L[i]
Y1 <- rep(0,L[i])
t <- system.time(for (j in 1:L[i]) Y1[j] <- exp(X[j]))[3] #####
t1[i] <- t
}
for (i in 1:k) {
X <- 2*1:L[i]
t <- system.time( Y2 <- sapply(1:L[i], function(q) exp(X[q])) )[3] #####
t2[i] <- t
}
for (i in 1:k) {
X <- 2*1:L[i]
t <- system.time( Y3 <- sapply(X, …Run Code Online (Sandbox Code Playgroud) 假设我们有一组小部件,每个小部件都有自己的输入标签.我们如何创建一个反应对象,其值是表示最后修改的窗口小部件的输入ID的字符?
例如,如果我们有
ui.R
shinyUI(fluidPage(
textInput('txt_a', 'Input Text A'),
textInput('txt_b', 'Input Text B")
))
Run Code Online (Sandbox Code Playgroud)
server.R
shinyServer(function(input, output) {
last_updated_widget <- reactive({
#hypothetical code that indicates ID value of last updated widget
})
})
Run Code Online (Sandbox Code Playgroud)
期望的结果如下.如果用户修改了第一个文本框,那么价值last_updated_widget()会"txt_a".如果他们修改第二个框,则值last_updated_widget()变为"txt_b".我正在寻找一个结果,该结果延伸到将值设置为最后调整的任何小部件的ID的明显概括.
我希望这适用于任意数量的窗口小部件输入,包括它们是由renderUI()语句生成的情况.因此,reactive()不能为每个小部件创建单独的语句.但是,如果响应语句需要在所有小部件名称(或类似的东西)上循环,我当然可以使用它.并且多个被动语句是可以的,只要它是固定数量,而不是小部件数量的函数.
这似乎是一个非常简单的问题,所以当它成为我的障碍时,我感到很惊讶.我觉得这个解决方案真的很明显,而我只是没有看到,所以如果是的话,我很抱歉让它成为一个新问题.但任何帮助将不胜感激.