通过以点(如.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) 有这种奇怪的行为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) 我有一个由条形图组成的交互式显示器,该条形图显示了针对不同类别的选定统计信息。但是,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轴标签的宽度?(或者等价于绘图面板的宽度?)
我正在尝试扩展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)的东西。
我有一个连续变量(传单地图上的缩放),并且我想仅在此变量超过给定阈值(仅在给定缩放级别之后)时激活某些操作(多边形绘制)。
这是一个类似的 - 但更简单,更容易重现 - 玩具问题:
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的反应性系统,情节(在玩具问题中)或地图(在实际问题中)不断更新,即使我希望它们仅在超过阈值时更新,在任一方向。
我试图用建筑observeEvent,eventReactive,reactiveValues,等夹杂if ... else声明。但似乎每当输入更新时,它都会触发整个事件链,无论因变量是否已更改。在玩具问题中,从到时input$slider > 200停留并不重要,它无论如何都会触发绘图。TRUEinput$slider100101
请告诉我我错了!
r ×6
ggplot2 ×2
shiny ×2
data.table ×1
encoding ×1
events ×1
facet ×1
facet-wrap ×1
fixed-width ×1
legend ×1
lm ×1
regression ×1
stringr ×1