我在 Sweave 文档中插入带有特殊字符的 pdf 图形的问题已通过在 Sweave 本身之外创建 pdf 绘图然后导入它来解决。
根据 Sweave 文档,我编写了一个自定义图形设备,它应该以完全相同的方式构建 pdf 图形。然而它不起作用。您能解释一下为什么下面的 Sweave 文档的第二个图形不起作用,而它应该与第一个图形完全一样地创建吗?我认为应该这样做是错误的吗?
\documentclass{article}
\begin{document}
\SweaveOpts{concordance=TRUE}
<<setup, echo=FALSE>>=
mycairo <- function(name, width = 7, height = 7, ...) {
grDevices::cairo_pdf(name, width = width, height = height)
}
mycairo.off <- function() {
cat("shutting down mycairo\n")
invisible(grDevices::dev.off())
}
@
\section{Export plot}
<<Export_plot, echo=FALSE>>=
cairo_pdf("exported_plot.pdf")
par(mar=c(6,7,0,6))
ylab <- expression(paste("", bar(italic("\u2113")), "(",phi[0], "|", italic(list(x,y)), ")"))
plot(0,0, ylab=ylab, xlab=NA, cex.lab=3)
invisible(dev.off())
@
% insert exported plot
\includegraphics[width=6cm]{exported_plot.pdf}
\section{Direct plot}
<<mycairo_plot, …Run Code Online (Sandbox Code Playgroud) 如何为图例指定标题plotly?我有一个堆积条形图,绘制不同的持续时间,如0-10,11-20.我希望传奇标题能说'持续时间'.
我正在尝试使用 更新backgroundColor列的dataTableProxy。但是,我不确定如何正确处理列名称。这是一个例子:
library(shiny)
library(DT)
ui <- fluidPage(
fluidRow(
DT::dataTableOutput("myplot")
)
)
server <- function(input, output) {
output$myplot <- DT::renderDataTable({
datatable(as.data.frame(rnorm(5))) %>%
formatStyle(1, backgroundColor = 'red')
})
proxy <- DT::dataTableProxy("myplot")
mycolors <- c("red", "green", "blue")
observe({
invalidateLater(1000)
proxy %>% replaceData(as.data.frame(rnorm(5)))
# proxy %>% replaceData(as.data.frame(rnorm(5))) %>%
# formatStyle(1, backgroundColor = sample(mycolors, 1))
})
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
尽管数字按我的预期更新,但我无法使其formatStyle工作(注释掉代码)。它不断显示以下错误:
Run Code Online (Sandbox Code Playgroud)Warning: Error in !: invalid argument type 56: name2int
"rnorm(5)"这是我在调用时遇到的错误formatStyle。
Run Code Online (Sandbox Code Playgroud)Warning: Error …
我创建了一个可以在我的“查看器”中查看的数据表。如果我使用导出来复制图像或保存为 .png,它的质量往往会很低吗?
我最好的选择是截取图像并将其粘贴到我的工作文档中,我在其中输入报告,但我知道必须有更好的方法。
对我能做什么有什么建议吗?
我想在 Shiny 的项目中包含字体很棒的selectizeInput图标。我该怎么办?
例如,给定一个算术表达式,x + y*z我想将其转换为add(x, multiply(y, z)).
> getAST <- function(ee) purrr::map_if(as.list(ee), is.call, getAST)
> getAST(quote(x + y*z))
[[1]]
`+`
[[2]]
x
[[3]]
[[3]][[1]]
`*`
[[3]][[2]]
y
[[3]][[3]]
z
Run Code Online (Sandbox Code Playgroud)
可以使用它rapply(result, as.character, how = "list")来获取字符而不是符号。
如何从这个 AST 中得到add(x, multiply(y, z))(结果)?当有一些括号时,这会变得更加复杂:
> getAST(quote((x + y) * z))
[[1]]
`*`
[[2]]
[[2]][[1]]
`(`
[[2]][[2]]
[[2]][[2]][[1]]
`+`
[[2]][[2]][[2]]
x
[[2]][[2]][[3]]
y
[[3]]
z
Run Code Online (Sandbox Code Playgroud)
我不要求答案必须使用该getAST功能。这只是一种可行的方法。
当然,在我的实际用例中,表达式更长。
这是没有括号时的情况的解决方案(我认为):
getAST <- function(ee) purrr::map_if(as.list(ee), is.call, getAST)
ast …Run Code Online (Sandbox Code Playgroud) 我想回答这个问题使用until.但这不起作用,我得出的结论是我不理解until.
所以我采用OP给出的功能,逐字:
removeAdjDups :: (Eq a) => [a] -> [a]
removeAdjDups [] = []
removeAdjDups [x] = [x]
removeAdjDups (x : y : ys)
| x == y = removeAdjDups ys
| otherwise = x : removeAdjDups (y : ys)
Run Code Online (Sandbox Code Playgroud)
然后我写一个True/False函数重新调整是否有重复:
hasAdjDups :: (Eq a) => [a] -> Bool
hasAdjDups [] = False
hasAdjDups [x] = False
hasAdjDups (x : y : ys)
| x == y = True
| otherwise = …Run Code Online (Sandbox Code Playgroud) 假设我有
f :: Int -> MyType
f i = ......
voxel :: MyType
voxel = f 2
function1 :: Double -> MyType -> MyOtherType
function1 x w = ......
function2 :: Double -> MyOtherType
function2 y = function1 y voxel
Run Code Online (Sandbox Code Playgroud)
现在,假设我调用function2两次,例如function2 1.0然后function2 2.0(我在上下文中OpenGL并且MyOtherType是要绘制的图形元素,用户可以y使用键盘进行更改).
那么,在第二次调用时function2,Haskell会重新评估voxel吗?
如果我有这样的情况,比方说是C语言,我会放一个printf在voxel知道答案,但我不能做这样的事情用纯Haskell的功能(可以吗?).
为了size_t在 C 中用打印整数printf,转换格式器是%zu。
但是,当我使用printfwith 时%zu,通过 FFI 打印zu而不是整数调用 Haskell 中的 C 函数。如何解决?
文件zu.c
#include <stdio.h>
void printzu(){
size_t x = 666;
printf("x=%zu", x);
}
Run Code Online (Sandbox Code Playgroud)
模块库.hs
{-# LANGUAGE ForeignFunctionInterface #-}
module Lib
where
import Foreign
foreign import ccall unsafe "printzu" printzu' :: IO ()
Run Code Online (Sandbox Code Playgroud)
Prelude> import Lib
Prelude Lib> printzu'
x=zu
Run Code Online (Sandbox Code Playgroud) 在数据表中,我们可以使用参数editable使表可编辑。我正在制作一个闪亮的应用程序,其中的表格既可编辑又可下载。
我的问题是如何在编辑后下载数据表?
这是我的应用程序代码:
library(shiny)
library(DT)
server <- function(input, output) {
df = iris
output$data = DT::renderDataTable ({
DT::datatable(df, editable = list(
target = 'row',
disable = list(columns = c(1, 3, 4))
))
})
output$downloadData <- downloadHandler(
filename = function() {
#paste(input$dataset, ".csv", sep = "")
},
content = function(file) {
write.csv(df, file, row.names = FALSE)
}
)
}
ui <- fluidPage(
DT::dataTableOutput('data'),
downloadButton("downloadData", "Download")
)
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud) r ×7
shiny ×4
dt ×3
haskell ×3
c ×1
datatables ×1
ffi ×1
font-awesome ×1
graphics ×1
pdf ×1
plotly ×1
selectize.js ×1
sweave ×1
utf-8 ×1