小编Her*_*sas的帖子

"使用"\ begin {align}"在rmarkdown中的多线方程中使用"\ begin {align}"编织+ pandoc pdf

我正在使用自动编号和\ begin {align}在R Markdown - LaTeX中编写一些多线方程.这是一个工作示例:

---
title: "test"
output: html_document
---

(@eq01) $$
\begin{align}
y = x^2 \\
y = x^3 \\
y = \sqrt[2]{x}
\end{align}
$$
Run Code Online (Sandbox Code Playgroud)

当输出为html_document时,这很有用.这是结果:

html_doc

但是当我将输出文档更改为pdf时:

output: pdf_document
Run Code Online (Sandbox Code Playgroud)

我收到以下错误(我正在使用RStudio最新版本0.98.1056):

错误

我一直在尝试按照错误消息中的建议阅读文档,但我似乎没有得到它的处理.我已经检查了Stack Overflow和谷歌,虽然有一些相关的帖子/问题(例如这里,这里,这里),但没有一个解决问题(或适用于我的问题).

我也尝试过调整一切.最明显的解决方案是摆脱\ begin {align}环境,

(@eq01) $$
y = x^2 \\
y = x^3 \\
y = \sqrt[2]{x}
$$
Run Code Online (Sandbox Code Playgroud)

但它有两个原因无效.首先,html版本不能很好地工作,因为自动编号不会出现在多线方程的中心,而是出现在第一行(我不喜欢它).

没有开始对齐的html输出

其次,虽然这种情况下的pdf版本确实编译并生成了pdf,但它并不认识到它是一个多线方程(就像它不能识别新的线命令一样).

PDF格式

任何想法都非常感谢.我一直在努力解决这个问题,我无法找到解决方案.我有点喜欢R Markdown,因为它真正将分析与写作和通信集成在一个工具中(而不是使用许多不同的工具来回).但是,在我们编写一个单独的源文件并且它以几种不同的输出格式正确呈现之前,似乎还有很长的路要走.

latex r rstudio knitr r-markdown

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

在Windows中运行的R中如何解决"剪贴板缓冲区已满且输出丢失"错误?

我试图在我的Windows机器中将一些数据直接从R复制到剪贴板.我在一些网站上发现使用file ="clipboard"会起作用.确实如此,但对于非常小的数据集.

例如:

如果我复制一个小数据集(100个obs),它可以顺利运行.

df1 <- data.frame(x=runif(100))
write.table(df1, file="clipboard", sep="\t", col.names=NA)
Run Code Online (Sandbox Code Playgroud)

但如果我将观察结果增加到10,000,则会失败:

df1 <- data.frame(x=runif(10000))
write.table(df1, file="clipboard", sep="\t", col.names=NA)
Run Code Online (Sandbox Code Playgroud)

错误是:

警告消息:在.External2中(C_writetable,x,file,nrow(x),p,r

对此有任何解决方法吗?

r

20
推荐指数
2
解决办法
8234
查看次数

R出生日期和任意日期的有效和准确的年龄计算(年,月或周)

我面临着计算出生日期和任意日期的年龄(年,月或周)的共同任务.事情是,我经常需要在许多记录(> 3亿)上执行此操作,因此性能是一个关键问题.

在SO和Google中快速搜索后,我找到了3个替代方案:

  • 常用的算术程序(/365.25)(链接)
  • 使用函数new_interval()duration()lubridate(链接)
  • age_calc()包中的功能eeptools(链接,链接,链接)

所以,这是我的玩具代码:

# Some toy birthdates
birthdate <- as.Date(c("1978-12-30", "1978-12-31", "1979-01-01", 
                       "1962-12-30", "1962-12-31", "1963-01-01", 
                       "2000-06-16", "2000-06-17", "2000-06-18", 
                       "2007-03-18", "2007-03-19", "2007-03-20", 
                       "1968-02-29", "1968-02-29", "1968-02-29"))

# Given dates to calculate the age
givendate <- as.Date(c("2015-12-31", "2015-12-31", "2015-12-31", 
                       "2015-12-31", "2015-12-31", "2015-12-31", 
                       "2050-06-17", "2050-06-17", "2050-06-17",
                       "2008-03-19", "2008-03-19", "2008-03-19", 
                       "2015-02-28", "2015-03-01", "2015-03-02"))

# Using a common arithmetic procedure ("Time differences in …
Run Code Online (Sandbox Code Playgroud)

r lubridate

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

将函数应用于Pandas DataFrame的列,条件是数据类型

我想使用通用模式将函数应用于Pandas DataFrame中的每一列,但该函数应以列数据类型为条件。

听起来很简单。但是我在测试数据类型时发现了一种怪异的行为,无法在文档中找到任何地方或搜索其原因。

考虑这个repex:

import pandas as pd

toydf = pd.DataFrame(dict(
    A = [1, 2, 3],
    B = [1.1, 1.2, 1.3],
    C = ['1', '2', '3'],
    D = [True, True, False]
))
Run Code Online (Sandbox Code Playgroud)

分别检查它们是什么类型 dtype('int64'), dtype('float64'), dtype('O'), dtype('bool')

但是,如果我使用该apply函数,则传递给该函数的所有列都是dtype: object

def dtype_fn(the_col):
    print(the_col)
    return(the_col.dtype)

toydf.apply(dtype_fn)

toydf.apply(dtype_fn)
0    1
1    2
2    3
Name: A, dtype: object
0    1.1
1    1.2
2    1.3
Name: B, dtype: object
0    1
1    2
2    3
Name: C, dtype: object
0 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

dplyr总结:从命名向量创建变量

这是我的问题:

我正在使用一个返回命名向量的函数.这是一个玩具示例:

toy_fn <- function(x) {
    y <- c(mean(x), sum(x), median(x), sd(x))
    names(y) <- c("Right", "Wrong", "Unanswered", "Invalid")
    y
}
Run Code Online (Sandbox Code Playgroud)

我在dplyr中使用group_by为每个组应用此函数(典型的split-apply-combine).那么,这是我的玩具data.frame:

set.seed(1234567)
toy_df <- data.frame(id = 1:1000, 
                     group = sample(letters, 1000, replace = TRUE), 
                     value = runif(1000))
Run Code Online (Sandbox Code Playgroud)

这是我的目标:

toy_summary <- 
    toy_df %>% 
    group_by(group) %>% 
    summarize(Right = toy_fn(value)["Right"], 
              Wrong = toy_fn(value)["Wrong"], 
              Unanswered = toy_fn(value)["Unanswered"], 
              Invalid = toy_fn(value)["Invalid"])

> toy_summary
Source: local data frame [26 x 5]

   group     Right    Wrong Unanswered   Invalid
1      a 0.5038394 20.15358  0.5905526 0.2846468
2      b 0.5048040 15.64892 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

8
推荐指数
2
解决办法
2021
查看次数

如何形成允许给定最大间隙的连续日期组?

给定一个像这样的表:

人物ID 联系日 最后联系天数 破折号组
1 2015-02-09 1
1 2015-05-01 81 2
1 2015-05-02 1 2
1 2015-05-03 1 2
1 2015-06-01 29 3
1 2015-08-01 61 4
1 2015-08-04 3 4
1 2015-09-01 28 5
2 2015-05-01 1
2 2015-06-01 31 2
2 2015-07-01 30 3
3 2015-05-01 1
3 2015-05-02 1 1
3 2015-05-04 2 1
3 2015-06-01 28 2
3 2015-06-02 1 2
3 2015-06-06 4 3

另请参阅DB Fiddle 示例

如何识别连续几天的连续但允许最大差距?

数据中的原始列是person_idcontact_day …

sql postgresql window-functions gaps-and-islands

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

如何使用 forcats 根据另一个变量的子集(方面)对因子重新排序?

forcats 小插图指出

forcats 包的目标是提供一套有用的工具来解决因子的常见问题

事实上,其中一个工具是通过另一个变量对因子进行重新排序,这是绘制数据时非常常见的用例。我试图用forcats它来实现这一点,但在多面情节的情况下。也就是说,我想通过其他变量对因子重新排序,但仅使用数据的子集。这是一个代表:

library(tidyverse)

ggplot2::diamonds %>% 
    group_by(cut, clarity) %>% 
    summarise(value = mean(table, na.rm = TRUE)) %>%
    ggplot(aes(x = clarity, y = value, color = clarity)) + 
    geom_segment(aes(xend = clarity, y = min(value), yend = value), 
                 size = 1.5, alpha = 0.5) + 
    geom_point(size = 3) + 
    facet_grid(rows = "cut", scales = "free") +
    coord_flip() +
    theme(legend.position = "none")
Run Code Online (Sandbox Code Playgroud)

这段代码产生的图接近我想要的:

在此输入图像描述

但我希望净度轴按值排序,这样我就可以快速找出哪个净度具有最高值。但每个方面都意味着不同的顺序。所以我想选择按特定方面内的值对图进行排序。

当然,在这种情况下,直接使用forcats是行不通的,因为它会根据所有值(而不仅仅是特定方面的值)对因子进行重新排序。我们开始做吧:

# Inserting this line right before the ggplot call
mutate(clarity = forcats::fct_reorder(clarity, …
Run Code Online (Sandbox Code Playgroud)

r forcats

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

使用 rmarkdown 布局左侧的大纲/目录和右侧布局的内容

我正在检查如何在我的rmarkdown文档中包含一个漂亮的目录/文档大纲(带有 html 输出)。

好吧,“标准”方法:

html_document:
    toc: true
Run Code Online (Sandbox Code Playgroud)

它有效,但我不喜欢它(甚至不调整选项和主题)。

但实际上,在文档的几个页面(例如http://rmarkdown.rstudio.com/html_document_format.html)中,他们使用了一个非常好的布局,包括页面左侧的目录/文档大纲和内容右侧(并且大纲与内容部分同步,突出显示您当前所在的内容)。

这正是我想要的。我猜他们是使用rmarkdown. 但我找不到如何去做。

我检查了该文档页面,以及rmarkdown 画廊弹性仪表板网站等。但我似乎无法弄清楚如何去做。

好吧,使用网站我可以做到,但对于我想要的东西来说似乎过于复杂(你需要有几个页面,至少有 index.Rmd 文件和 _site.yml 文件)。

相反,我想应该有一个选项可以简单地告诉rmarkdown我的单个文档并将节标题放在左侧的漂亮框架中,如 RStudio 的示例页面中所示。

r r-markdown

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

使用R从网上下载javascript加载数据?棘手的网络抓取

我一直在尝试使用R进行一些网页抓取,并且在几个页面中它相对容易.但是我已经在一个特定的网页上挣扎了几个星期:

https://www.commerzbank.de/de/hauptnavigation/kunden/kursinfo/devisenk/weitere_waehrungen___indikative_kurse/indikative_kurse.jsp

我认为,问题在于最终页面使用javascript加载数据.

起初我认为这是一个非常简单的案例; 毕竟,它只是一个链接,你放在浏览器中查看数据,所以我认为好,这是一个很好的旧的获取请求,我天真地尝试这样的事情:

library(httr)
url <- "https://www.commerzbank.de/de/hauptnavigation/kunden/kursinfo/devisenk/weitere_waehrungen___indikative_kurse/indikative_kurse.jsp"
res1 <- GET(url = url)
Run Code Online (Sandbox Code Playgroud)

由于它不起作用,我检查了网页的工作方式,如下所示.首先,它设置一些cookie和一些参数,然后将浏览器(通过http POST请求)重定向到URL https://www.commerzbank.de/rates/do.rates.这个新页面加载了一个巨大的javascript代码(1923行代码,由http://jsbeautifier.org/格式化),负责下载数据并生成html代码以显示它.此代码使用原始页面设置的cookie和参数来确定要下载和显示的数据.

我在R中尝试了太多东西来获取此网页中的数据.我不会在这里放入我尝试的所有疯狂的东西,因为它太长了(有时令人尴尬),但我尝试过使用RCurl和其他软件包的大部分功能(repmis,scrapeR,httr,rjson等) .似乎没有任何工作,因为这些软件包似乎没有办法(至少自动)使javascript代码运行以下载数据.

是否有任何包/隐藏功能可以帮助我实现这一目标?

提前致谢.

r web-scraping rcurl httr

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