小编Sté*_*ent的帖子

Sweave 中的自定义图形设备

在 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)

pdf graphics r utf-8 sweave

5
推荐指数
1
解决办法
207
查看次数

传奇标题在剧情中

如何为图例指定标题plotly?我有一个堆积条形图,绘制不同的持续时间,如0-10,11-20.我希望传奇标题能说'持续时间'.

r shiny plotly

5
推荐指数
2
解决办法
5995
查看次数

如何通过 dataTableProxy 使用 formatStyle 更新数据表

我正在尝试使用 更新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工作(注释掉代码)。它不断显示以下错误:

Warning: Error in !: invalid argument type
  56: name2int
Run Code Online (Sandbox Code Playgroud)

"rnorm(5)"这是我在调用时遇到的错误formatStyle

Warning: Error …
Run Code Online (Sandbox Code Playgroud)

r datatables shiny dt

5
推荐指数
1
解决办法
1906
查看次数

如何将我使用(DT)数据表创建的表保存为高质量图像?

我创建了一个可以在我的“查看器”中查看的数据表。如果我使用导出来复制图像或保存为 .png,它的质量往往会很低吗?

我最好的选择是截取图像并将其粘贴到我的工作文档中,我在其中输入报告,但我知道必须有更好的方法。

对我能做什么有什么建议吗?

r dt

5
推荐指数
1
解决办法
2943
查看次数

带有精美图标的闪亮下拉输入(selectizeInput)

我想在 Shiny 的项目中包含字体很棒的selectizeInput图标。我该怎么办?

r font-awesome shiny selectize.js

5
推荐指数
1
解决办法
462
查看次数

用 R 转换抽象语法树

例如,给定一个算术表达式,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)

r arithmetic-expressions symbolic-math abstract-syntax-tree

5
推荐指数
1
解决办法
86
查看次数

"直到"如何运作?

我想回答这个问题使用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)

haskell

4
推荐指数
1
解决办法
698
查看次数

Haskell在根据此值调用函数时是否重新计算值?

假设我有

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语言,我会放一个printfvoxel知道答案,但我不能做这样的事情用纯Haskell的功能(可以吗?).

haskell

4
推荐指数
1
解决办法
97
查看次数

printf 和 size_t 使用 FFI

为了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)

c haskell ffi

4
推荐指数
1
解决办法
166
查看次数

如何下载闪亮的可编辑数据表

在数据表中,我们可以使用参数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 shiny dt

4
推荐指数
1
解决办法
3689
查看次数