来自R编程,我正在使用Rcpp以C/C++的形式扩展到已编译的代码.作为循环交换效果的练习(一般只是C/C++),我实现了R的等价rowSums()和RcppcolSums()矩阵的函数(我知道它们存在于Rcpp糖和Armadillo中 - 这只是一个练习).
我有我的C++实现rowSums(),并colSums()沿RCPP糖和arma::sum()版本在这个matsums.cpp文件中.我只是这样的简单循环:
NumericVector Cpp_colSums(const NumericMatrix& x) {
int nr = x.nrow(), nc = x.ncol();
NumericVector ans(nc);
for (int j = 0; j < nc; j++) {
double sum = 0.0;
for (int i = 0; i < nr; i++) {
sum += x(i, j);
}
ans[j] = sum;
}
return ans;
}
NumericVector Cpp_rowSums(const NumericMatrix& x) { …Run Code Online (Sandbox Code Playgroud) 我想更改Shiny应用程序的样式。我到这里https://bootswatch.com/solar/并下载了.css样式file:“ Solar A spin on Solarized”。
library(shiny)
ui <- fluidPage(
titlePanel(tags$i(h1(strong("My Panel Title"),style = "font-family: 'times'; font-size: 82px"))),align="center",
navbarPage(theme="bootstrap.min.css",title = 'Methods',
tabPanel('One'),
tabPanel('Two'),
tabPanel('Three'),
tabPanel('Four'))
)
server <- function(input, output) {
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
但是如您所见,导航栏看起来很奇怪:
我该如何解决?
我本质上是想在一个闪亮的应用程序中复制该网站上的图表行为。
也就是说,我想创建一个交互式图表,通过将鼠标光标悬停在图表上,您可以沿 x 轴移动“目标线”。然后,根据目标线的位置,图形上绘图线的 y 值显示在目标线和绘图线的交点上。(我本来打算发布一个说明性的数字,但看来我还没有足够的声誉。)
我已经成功地让应用程序运行起来。在我当前的实现中,我使用hover选项来plotOutput获取光标在绘图上的位置,然后将目标线添加abline到新绘图中。与 一起points在text绘图上添加 y 值。
我遇到的问题是,移动一段时间后,目标线开始严重滞后于实际的鼠标光标。我认为这是因为每次鼠标悬停位置更新时都必须重新绘制整个绘图(当前光标移动时每 500 毫秒一次,因为我正在使用hoverOpts(delayType = "throttle"))。渲染速度不够快,无法跟上鼠标的移动。我想知道是否有人知道如何解决这个问题。
Shiny 应用程序示例的可运行代码:
library(shiny)
trigWaves <- function(A = 1, ...) {
xval <- seq(0, 2*pi, len = 201)
sinx <- A * sin(xval); cosx <- A * cos(xval)
plot(x = xval, y = sinx, type = 'n', ylab = "f(x)", xlab = "x", ...)
abline(h = A * c(-1, 0, 1), lty = …Run Code Online (Sandbox Code Playgroud) 遗憾的是,您经常会看到有关SO的问题,这些问题以不可复制的格式呈现数据; 往往只是复制的结果print()...
set.seed(1)
x <- sample(LETTERS, 40, replace = T)
y <- rnorm(20)
Run Code Online (Sandbox Code Playgroud)
......比如这样:
x
[1] "G" "J" "O" "X" "F" "X" "Y" "R" "Q" "B" "F" "E" "R" "J" "U" "M" "S"
[18] "Z" "J" "U" "Y" "F" "Q" "D" "G" "K" "A" "J" "W" "I" "M" "P" "M" "E"
[35] "V" "R" "U" "C" "S" "K"
Run Code Online (Sandbox Code Playgroud)
... 或这个:
y
[1] 0.91897737 0.78213630 0.07456498 -1.98935170 0.61982575
[6] -0.05612874 -0.15579551 -1.47075238 -0.47815006 0.41794156
[11] 1.35867955 -0.10278773 0.38767161 -0.05380504 …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,有两个observeEvent() 处理程序对输入A 和输入B 做出反应并执行一些操作。事件 A 的内容之一是更新输入 B。
shinyApp(
ui = fluidPage(
selectInput("A", "Input A", c(1:5)),
selectInput("B", "Input B", c(6:10))
),
server = function(input, output, session) {
observeEvent(input$A, ignoreInit = TRUE, {
message("Doing A stuff")
updateSelectInput(session, "B", selected = 10)
})
observeEvent(input$B, ignoreInit = TRUE, {
message("Doing B stuff")
})
}
)
Run Code Online (Sandbox Code Playgroud)
因此,更改输入 A 显然也会触发事件 B。我希望事件 B 仅在用户更改输入值时触发,而不是在 updateInput 完成更改时触发。有没有办法在计算表达式时暂停调度事件?我想要这样的东西:
shinyApp(
ui = fluidPage(
selectInput("A", "Input A", c(1:5)),
selectInput("B", "Input B", c(6:10))
),
server = function(input, output, session) {
observeEvent(input$A, ignoreInit …Run Code Online (Sandbox Code Playgroud) 我正在处理两个方形邻接矩阵。一个比另一个小,但是较小的是较大的子集。
我不确定这是否是交叉生产,矩阵乘法或其他的工作。我是否只需要做一个较大矩阵的子集,然后再相乘?
有一种简单的方法可以说:“嘿,在小表中看到这些列/行名称,然后在大表中乘以它们对应的列/名称?”
m1<-matrix(1,5,5)
colnames(m1)<-LETTERS[1:5]
rownames(m1)<-LETTERS[1:5]
m1
# A B C D E
# A 1 1 1 1 1
# B 1 1 1 1 1
# C 1 1 1 1 1
# D 1 1 1 1 1
# E 1 1 1 1 1
m2<-matrix(1:9,3,3)
colnames(m2)<-c("D","A","C")
rownames(m2)<-c("D","A","C")
m2
# D A C
# D 1 4 7
# A 4 5 8
# C 7 8 9
hoping to get something that looks like
if I …Run Code Online (Sandbox Code Playgroud)