小编Art*_*hur的帖子

以点开头的data.frame的变量在()中消失

通过以点(如.identifier)开头的名称来调用变量是合法的.但是,within()功能不会保留它们.我错过了什么?或者这是一个错误?

A <- data.frame(.has.a.dot=1:10,has.no.dot=letters[1:10])
within(A, new.variable<-rnorm(10,.has.a.dot))
Run Code Online (Sandbox Code Playgroud)

给出:

   has.no.dot new.variable
1           a     1.300361
2           b     3.014026
3           c     2.354260
4           d     4.261637
5           e     5.159326
6           f     7.178712
7           g     6.438039
8           h     8.253819
9           i     9.463351
10          j     8.828403
Run Code Online (Sandbox Code Playgroud)

r naming-conventions

7
推荐指数
1
解决办法
96
查看次数

为什么在操作字符串时stringr会改变编码?

有这种奇怪的行为stringr,这真让我烦恼.stringr在没有警告的情况下更改包含异国字符的某些字符串的编码,在我的情况下ø,å,æ,é和其他一些......如果你str_trim是一个字符矢量,那么具有异国情调字母的字符将被转换为新的编码.

letter1 <- readline('Gimme an ASCII character!')     # try q or a
letter2 <- readline('Gimme an non-ASCII character!') # try ø or é
Letters <- c(letter1, letter2)
Encoding(Letters)           # 'unknown'
Encoding(str_trim(Letters)) # mixed 'unknown' and 'UTF-8'
Run Code Online (Sandbox Code Playgroud)

这是一个问题,因为我使用data.table来快速合并大表,而data.table不支持混合编码,因为我找不到回归统一编码的方法.

任何解决方法?

编辑:我以为我可以回到基本功能,但他们不保护编码.paste保留它,但不是sub例如.

 Encoding(paste(' ', Letters))                 # 'unknown'
 Encoding(str_c(' ', Letters))                 # mixed
 Encoding(sub('^ +', '', paste(' ', Letters))) # mixed
Run Code Online (Sandbox Code Playgroud)

encoding r stringr data.table

7
推荐指数
1
解决办法
928
查看次数

可以用ggplot2固定轴边距吗?

我有一个由条形图组成的交互式显示器,该条形图显示了针对不同类别的选定统计信息。但是,ggplot2根据标签重新调整y轴的宽度,因此使条带在x方向上烦人地移动。参见示例:

library(shiny)
library(dplyr)
library(ggplot2)

shinyApp(
  ui = bootstrapPage(
    selectInput('statistic', label='Chose a statistic', choices=c('carat', 'depth', 'table', 'price')),
    plotOutput('plot')
  ),
  server = function(input, output) {
    output$plot <- renderPlot(
      diamonds %>%
        ggplot(aes(x=color, y=get(input$statistic))) +
        geom_bar(stat = 'sum') +
        theme(text = element_text(size=20), legend.position="none")
    )
  }
)
Run Code Online (Sandbox Code Playgroud)

如何确定y轴标签的宽度?(或者等价于绘图面板的宽度?)

我确实找到了相关的问题,但是所有问题都在静态上下文中解决,例如使用facets或with解决gtable

r ggplot2 fixed-width shiny

6
推荐指数
1
解决办法
829
查看次数

从 QR 分解中获取帽子矩阵以进行加权最小二乘回归

我正在尝试扩展lwr()包的功能McSptial,它适合将加权回归作为非参数估计。在函数的核心中lwr(),它使用以下方法反转矩阵solve(),它使用QR 分解而不是 QR 分解来我想更改它,但无法弄清楚如何从 QR 分解中获取帽子矩阵(或其他导数)。

有数据:

set.seed(0); xmat <- matrix(rnorm(500), nrow=50)    ## model matrix
y <- rowSums(rep(2:11,each=50)*xmat)    ## arbitrary values to let `lm.wfit` work
w <- runif(50, 1, 2)    ## weights
Run Code Online (Sandbox Code Playgroud)

lwr()功能如下:

xmat2 <- w * xmat
xx <- solve(crossprod(xmat, xmat2))
xmat1 <- tcrossprod(xx, xmat2)
vmat <- tcrossprod(xmat1)
Run Code Online (Sandbox Code Playgroud)

我需要的值,例如:

sum((xmat[1,] %*% xmat1)^2)
sqrt(diag(vmat))
Run Code Online (Sandbox Code Playgroud)

目前我使用reg <- lm.wfit(x=xmat, y=y, w=w)但无法设法恢复在我看来是帽子矩阵(xmat1)的东西。

regression r linear-regression lm qr-decomposition

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

当变量超过阈值时触发闪亮的事件

我有一个连续变量(传单地图上的缩放),并且我想仅在此变量超过给定阈值(仅在给定缩放级别之后)时激活某些操作(多边形绘制)。

这是一个类似的 - 但更简单,更容易重现 - 玩具问题:

ui <- bootstrapPage(
  sliderInput("slider", label='a number', min=100, max=400, value = 150),
  plotOutput("plot")
)

server <- function(input, output, session) {
  observeEvent(input$slider > 200, {
    output$plot <- renderPlot(plot(rnorm(10000), rnorm(10000)))
  })
}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

问题是,由于Shiny的反应性系统,情节(在玩具问题中)或地图(在实际问题中)不断更新,即使我希望它们仅在超过阈值更新,在任一方向。

我试图用建筑observeEventeventReactivereactiveValues,等夹杂if ... else声明。但似乎每当输入更新时,它都会触发整个事件链,无论因变量是否已更改。在玩具问题中,从到时input$slider > 200停留并不重要,它无论如何都会触发绘图。TRUEinput$slider100101

请告诉我我错了!

events r reactive-programming shiny

2
推荐指数
1
解决办法
5788
查看次数

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