小编Ale*_*lex的帖子

完美地对齐几个图

我的目标是一个复合图,它结合了散点图和2个图来进行密度估算.我面临的问题是由于密度图的缺失轴标记和散点图的图例,密度图未能与散点图正确对齐.它可以通过播放arround来调整plot.margin.但是,这不是一个更好的解决方案,因为如果对图形进行更改,我将不得不一遍又一遍地进行调整.有没有办法以某种方式定位所有绘图,以便实际绘图面板完美对齐?

在此输入图像描述

我尽量保持代码尽可能小,但为了重现问题,它仍然是相当多的.

library(ggplot2)
library(gridExtra)

df <- data.frame(y     = c(rnorm(50, 1, 1), rnorm(50, -1, 1)), 
                 x     = c(rnorm(50, 1, 1), rnorm(50, -1, 1)), 
                 group = factor(c(rep(0, 50), rep(1,50))))


empty <- ggplot() + 
              geom_point(aes(1,1), colour="white") +
              theme(                              
                plot.background = element_blank(), 
                panel.grid.major = element_blank(), 
                panel.grid.minor = element_blank(), 
                panel.border = element_blank(), 
                panel.background = element_blank(),
                axis.title.x = element_blank(),
                axis.title.y = element_blank(),
                axis.text.x = element_blank(),
                axis.text.y = element_blank(),
                axis.ticks = element_blank()
              )


scatter <-  ggplot(df, aes(x = x, y = y, color = group)) …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

6
推荐指数
2
解决办法
1941
查看次数

将列添加到 sqlite 数据库

我正在尝试将我在 R 中生成的向量作为新列添加到 sqlite 表中。为此,我想使用dplyrdbplyr根据此处的这篇文章,我安装了最新的开发版本以及软件包)。我试过的:

library(dplyr)
library(DBI) 

#creating initial database and table
dbcon      <- dbConnect(RSQLite::SQLite(), "cars.db") 
dbWriteTable(dbcon, name = "cars", value = cars)
cars_tbl <- dplyr::tbl(dbcon, "cars")

#new values which I want to add as a new column 
new_values <- sample(c("A","B","C"), nrow(cars), replace = TRUE) 

#attempt to add new values as column to the table in the database
cars_tbl %>% mutate(new_col = new_values) #not working
Run Code Online (Sandbox Code Playgroud)

实现这一目标的简单方法是什么(不一定使用 dplyr)?

r dplyr rsqlite r-dbi dbplyr

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

Stargazer的Rmarkdown:如果align设置为TRUE,LaTeX会出错

我正在使用stargazer,我想LaTeX为一个简单的lm对象生成一个输出.问题是我无法设置align = TRUE而不会收到错误.

LaTeX错误:\浮点外的标题.

我查了一下,消息说错了.将Stargazer输出直接复制到Latex文档中可以正常工作.将其复制到rmarkdown文档中会产生相同的错误(这并不奇怪,但我只是想确定).在玩了一下后,我发现rmarkdown如果重要的星(*)被移除(或精确到^{***}),它就会起作用.但是,stargazer默认情况下会生成它们,它们也是输出的重要部分.

有没有办法让它发挥作用?

---
header-includes:
- \usepackage{dcolumn}
output: pdf_document
---

## R Markdown
```{r, include = FALSE}
library(stargazer)
df <- data.frame(x = 1:10 + rnorm(100),
                 y = 1:10 + rnorm(100))
reg <- lm(y ~ x, data = df)
```

```{r, results='asis', echo = FALSE}
stargazer(reg, header = FALSE, align = TRUE)
```
Run Code Online (Sandbox Code Playgroud)

r pandoc knitr r-markdown stargazer

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

R公式中的条件(|)

在R公式上找到了这个pdf,我无法弄清楚它是如何|工作的(参见第二页的表格).此外,我在网上找不到任何解释.它不时出现在可能的公式符号的列表中但没有任何示例.

我认为它可能已经过时,因为其他方式可以实现它所做的一切.

有人知道如何使用|公式以及它究竟达到了什么目的吗?

一些代码显示我笨拙的尝试使用|.

x <- rnorm(100)
y <- rnorm(100)
z <- sample(c(TRUE, FALSE), 100, replace = TRUE )

lm(y ~ x|z)
Run Code Online (Sandbox Code Playgroud)

r

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

绘图窗口中的corrplot边距

我输入了以下命令来开发核心图.它有效,但情节显示夹在底部边缘.更改par(mar = c(5,4,4,2)+ 0.1)参数对corrplot的放置没有影响.想法?

library(corrplot)
a <- seq(1,10,1)
b <- seq(2,20,2)
c <- seq(3,30,3)
z <- data.frame(a,b,c)
corrplot(cor(z))
Run Code Online (Sandbox Code Playgroud)

r r-corrplot

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

如何在闪亮的反应式表达式中使用data.table?

使用以下代码data.dable可以选择 a 的列。

mtcars_dt <- data.table(mtcars)
selected_cols <- c("mpg")
mtcars_dt[ ,..selected_cols]
Run Code Online (Sandbox Code Playgroud)

我想在闪亮的反应式表达式中做同样的事情。然而,它的行为很奇怪。这是一个可重现的示例

library(shiny)
library(data.table)
mtcars_dt <- data.table(mtcars)

ui <- basicPage(
  selectInput("var", "Select variable", names(mtcars)),
  textOutput("out1"),
  textOutput("out2")
)


server <- function(input, output) {

output$out1 <- renderText({
    mtcars[1:3 ,input$var]
  })

output$out2 <- renderText({
  mtcars_dt[1:3 , ..input$var]
})

}

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

当我运行此应用程序时,第二个输出是一个字符串,其中包含我要选择的列的名称。

为什么会发生这种情况?我该如何解决它?

r shiny data.table

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

RStudio - 更改默认代码块

在 RStudio 中,当我在我的 .Rmd 文件(代码>插入块或 Ctrl-Alt-I)中插入一个新的代码块时,默认情况下它具有 header {r}。我想让它默认为 knitr option {r, message=F},我发现它可以产生更好的最终报告输出。有没有办法更改 RStudio 中的默认代码标头?谢谢!

r rstudio knitr r-markdown

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

如何缩进新段落?

如何rmarkdown以新段落以缩进的第一行(作为LateX中的默认行)开始而不是使用空格而不是缩进的方式更改设置.

这就是我通常得到的:

---
output: pdf_document
---

## R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.

When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:**
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这就是我想要的:

在此输入图像描述

latex r r-markdown

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

如何将 OpenBlas Lapacke 与 Rcpp 一起使用

我有一些Lapacke使用OpenBlas. 我想将此代码包含到 R 包中,并使用该Rcpp包在该函数和 R 之间传输数据。但不知为何,两人似乎并不喜欢对方。一旦我#include <lapacke.h>#include <Rcpp.h>一个源文件中,它就不再编译了。两者单独工作都很好。据我所知,有一大堆错误消息已损坏Rcpp(例如/home/Alex/R/x86_64-pc-linux-gnu-library/3.4/Rcpp/include/Rcpp/traits/traits.h:32:15: error: expected \xe2\x80\x98)\xe2\x80\x99 before \xe2\x80\x98__extension__\xe2\x80\x99).

\n\n

我不知道为什么会发生这种情况。有没有办法同时使用两者?\n或者我应该做一些完全不同的事情?

\n\n

这是一个给我错误的最小示例:

\n\n
    \n
  1. 我使用创建了一个包

    \n\n
    Rcpp::Rcpp.package.skeleton("LT", example_code = FALSE)\n
    Run Code Online (Sandbox Code Playgroud)
  2. \n
  3. 我添加了一个.cpp文件来/src包含

    \n\n
    #include <lapacke.h>\n#include <Rcpp.h>\n\nint test_LAPACK(){\n  return(1);\n}\n
    Run Code Online (Sandbox Code Playgroud)
  4. \n
  5. 我添加了一个 Makvars 文件来/src包含

    \n\n
    PKG_CXXFLAGS = -I/opt/OpenBLAS/include\nPKG_LIBS =  -L/opt/OpenBLAS/lib -lopenblas -lpthread -lgfortran\nCXX_STD = CXX11\n
    Run Code Online (Sandbox Code Playgroud)
  6. \n
  7. 编译安装

    \n\n
    Rcpp::compileAttributes("LT")\ndevtools::install("LT")\n
    Run Code Online (Sandbox Code Playgroud)
  8. \n
\n

c++ r rcpp lapacke r-package

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

确定一个共同的模式

是否有(容易)识别两个字符串共有的共同模式的可能性?这里有一个小例子来说明我的意思:

我有两个包含字符串的变量.两者都包括相同的模式("ABC")和一些"噪音".

a <- "xxxxxxxxxxxABCxxxxxxxxxxxx"
b <- "yyyyyyyyyyyyyyyyyyyyyyyABC"
Run Code Online (Sandbox Code Playgroud)

让我说我不知道​​常见的模式,我希望R找出两个字符串都包含"ABC".我怎样才能做到这一点?

*编辑

第一个例子可能有点简单化.这是我的真实数据的一个例子.

a <- "DUISBURG-HAMBORNS"
b <- "DUISBURG (-31.7.29)S"
Run Code Online (Sandbox Code Playgroud)

两个字符串都包含"DUISBURG",我希望函数能够识别.

*编辑

我在评论中发布的链接中提出了解决方案.但我仍然没有我想要的.

library(qualV)
LCS(strsplit(a[1], '')[[1]],strsplit(b[1], '')[[1]])$LCS

[1] "D" "U" "I" "S" "B" "U" "R" "G" "-" " " " " "S"
Run Code Online (Sandbox Code Playgroud)

如果函数正在寻找两个向量的最长公共子序列,为什么它不会停止"D" "U" "I" "S" "B" "U" "R" "G"?.

string r lcs

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

用于算术运算的c ++性能不佳

我只使用R和c ++中的算术运算(使用rcpp)编写了一个非常简单的函数.比较这两个函数显示我的c ++实现比我的R代码慢,这让我很困惑.

c ++版本:

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
NumericVector dn_cpp(NumericVector x, NumericVector sigma, NumericVector mu) {
  return   1/(sqrt(2*M_PI)*sigma) * exp(pow((x-mu),2)/(-2*pow(sigma, 2)) );
}
Run Code Online (Sandbox Code Playgroud)

R版:

dn_r <- function(x, sigma, mu) {
  1/(sqrt(2*pi)*sigma) * exp((x-mu)^2/(-2*sigma^2)  )
}
Run Code Online (Sandbox Code Playgroud)

比较两者:

library(microbenchmark)
microbenchmark(
  dn_r(1,1,1),
  dn_cpp(1,1,1),
  times = 10000
)

# Unit: nanoseconds
#             expr  min   lq      mean median     uq     max neval
#    dn_r(1, 1, 1)  509  567  667.1547    627  715.5   12690 10000
#  dn_cpp(1, 1, 1) 1094 1242 1713.8351   1335 1479.0 …
Run Code Online (Sandbox Code Playgroud)

performance r rcpp

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