我有两个与gridExtra::grid.arrange. 我可以用top参数在它们上面加上一个标题。问题是,我被要求在情节的左上角找到标题。
一个可重现的例子:
library(ggplot2)
library(gridExtra)
p1 <- qplot(1:20)
p2 <- qplot(30, 35)
grid.arrange(p1, p2, nrow = 1, top = "Title")
Run Code Online (Sandbox Code Playgroud)
产生
但我需要的是:
我读了好几次?arrangeGrob文件(我认为这是我的答案),但还没有想出如何实现它。
我有一个字符串向量,说:
vect<-c("oxidor magnesio","oxido magnesio","oxido calcio", "oxidante","oxido calcio magnesio","magnesio oxido")
Run Code Online (Sandbox Code Playgroud)
我想找到两个词的出现,"oxido"和"magnesio".我正在做的是
intersect(grep("\\boxido\\b",vect),grep("\\bmagnesio\\b",vect))
Run Code Online (Sandbox Code Playgroud)
但,
2和5).命令是什么?谢谢,
在我的数据框中,有一个带有乘数指示符的列,例如数千,数百,数百万等,作为文本.
我想将它们转换为数字.这就是我尝试过的:
a <- c("Thousands", "thousands", "Hundreds", "hundreds")
newA <- as.numeric(gsub("[Tt]housands","1000",gsub("[Hh]undreds","100",a)))
Run Code Online (Sandbox Code Playgroud)
哪个有效,但是当有许多乘数时(例如情况),结果非常麻烦.我当时认为应该有一种方法可以在一次gsub通话中完成,但是无法做到.像这样的东西是我想要的(当然这个特殊的尝试不起作用):
as.numeric(gsub("^.*-","",gsub("([Hh]undreds)([Tt]housands)","\\1-100 \\2-1000",a)))
Run Code Online (Sandbox Code Playgroud) 我有一个数据表,其中包含许多产品的日期消耗.我生成了每个产品的预测,现在想要获得平均值,并在期间+1上限80%.问题是预测对象是一个具有不同结构的列表,具体取决于所使用的方法,因此我无法通过索引来检索值(我可以通过名称来检索data.table).
这是(虚拟)数据和代码:
# load required libraries
library(data.table)
library(xts)
library(forecast)
library(dplyr)
# create random data
set.seed(1)
a <- data.table(prod = sample(LETTERS[1:5], 20, TRUE), cons = sample(1:50, 20, TRUE), dt = sample(seq(as.Date("2016/06/01"), as.Date("2016/07/27"), by = "day"), 20, FALSE))
# create a time series of purchases
b <- a[, .(C=sum(cons)), by = .(dt, prod)][, x := .(list(xts(x = C, order.by = dt))), by = prod]
b <- b[, .SD[1,], by = prod]
# create a "reference" timeseries
dts <- xts(order.by = …Run Code Online (Sandbox Code Playgroud) 我有一个data.table列有一些值的预测,我想用ggplot2::autoplot.
我正在尝试这个(可重复的例子):
require(data.table)
require(forecast)
require(ggplot2)
## create data.table
a <- data.table(id = 1:2)
a[, x := .(list(sample(1:10, 5, FALSE))), by = id]
a[, y := .(list(forecast(x[[1]]))), by = id]
## plot by id:
a[, {png(paste0(id, ".png")); autoplot(y[[1]]); dev.off()}, by = id]
Run Code Online (Sandbox Code Playgroud)
但它会创建空白画布。
但是,以下代码有效:
png("1.png")
a[1, autoplot(y[[1]])]
dev.off()
Run Code Online (Sandbox Code Playgroud)
这让我认为它与{}. 下一个代码也有效(因为plot不适用于预测对象,我正在绘制x变量:
a[, {png(paste0(id, ".png")); plot([[1]]); dev.off()}, by = id]
Run Code Online (Sandbox Code Playgroud)
这让我想起autoplot.
我做错了什么,有效实现我想要的东西的方法是什么?
我尝试编写一个非常简单的 Rmarkdown 文件来呈现为 pdf,但是遇到了undefined control sequence的错误。
文件:
---
title: "Untitled"
author: "author"
date: "3/2/2020"
output: pdf_document
---
# whatever
fskjflsjflkj
Run Code Online (Sandbox Code Playgroud)
保存为 test.Rmd 并编织(使用按钮)在 R markdown 控制台中产生以下输出:
processing file: test.Rmd
output file: test.knit.md
! Undefined control sequence.
l.115 \xdef\@fontenc@load@list{\@fontenc@load@list
Error: LaTeX failed to compile test.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips. See test.log for more info.
Execution halted
Run Code Online (Sandbox Code Playgroud)
以下是相关test.log部分:
Already applied: [0000/00/00] Old fixltx2e package on input line 53.
) (/usr/local/texlive/2019/texmf-dist/tex/latex/base/fontenc.sty
Package: fontenc 2020/02/11 v2.0o Standard LaTeX package …Run Code Online (Sandbox Code Playgroud) 在回答这个问题patterns时,我尝试将该功能与以下内容一起使用data.table::melt:
df1 <- structure(list(Material_code = 111:112,
actual_202009 = c(30L, 19L),
actual_202010 = c(44L, 70L),
actual_202011 = c(24L, 93L),
pred_202009 = c(25L, 23L),
pred_202010 = c(52L, 68L),
pred_202011 = c(27L, 100L)),
class = c("data.table", "data.frame"),
row.names = c(NA, -2L))
Run Code Online (Sandbox Code Playgroud)
我想将宽表转换为长表,将actual和pred值分开。我认为日期部分将保留在变量中,但它被更改为因子数字(1、2 等):
melt(df1, 1, measure = patterns(actual = "actual_", pred = "pred_"))[1, ]
> Material_code variable actual pred
> 1: 111 1 30 25
Run Code Online (Sandbox Code Playgroud)
我想要该字段中的“202009”而不是“1” variable。
我完全意识到我可以通过使用以下方法来实现这一目标tstrsplit …
我想将一个字符串分成两组.字符串的结构非常简单,但我无法使其工作.
txt <- "text12-01-2016"
Run Code Online (Sandbox Code Playgroud)
它总是一些字母,后跟一个日期和日期,显然是以数字开头.我在https://regex101.com/尝试了以下正则表达式,并有效地将字符串正确分开:
([a-zA-Z]*)([0-9].*)
1. "text"
2. "12-01-2016"
Run Code Online (Sandbox Code Playgroud)
但是当我在R中尝试它失败时:
strsplit(a[1],split = "([a-zA-Z]*)([0-9]*)")
[[1]]
[1] "" " " "" "." " " "" " " "" "-" "" "-" ""
Run Code Online (Sandbox Code Playgroud)
如果我引入双方括号,那么它"吃掉"第一组的最后一个字符,第二组的第一个字符:
strsplit(txt,split = "([[a-zA-Z]]*)([[0-9]]*)")
[[1]]
[1] "tex" "2-01-2016"
Run Code Online (Sandbox Code Playgroud)
如果我使用它并不重要perl=TRUE.如果我使用结果也是一致的stringi::stri_split,所以这是我的正则表达式中的一个问题.
在这种情况下使用的正确正则表达式是什么?
我正在生成一个镶嵌图vcd::mosaic.但是我给出的因素的文本很长(切割它们不是一种选择,并且在很多情况下,介绍\n似乎令人生畏),所以文本中有重叠,我无法强制标签垂直于轴.
这就是我正在尝试的:
a <- data.frame(x=sample(LETTERS[1:4],16,replace = TRUE),
y=rep(paste("very long label here at number", 1:4, paste=" "), 4))
mosaic(y ~ x, data= a, las= 2)
Run Code Online (Sandbox Code Playgroud)
我也tryed par(las= 2)和par(las= 3),但这些都不是能够迫使他们垂直对齐(las= 2用效果很好mosaicplot,不过,这就像vcd::mosaic覆盖las无论是作为一个给定的参数或作为默认设置par.我也有打par(mar),但标签足够长,可以欺骗这种解决方法.
我该怎么做才能获得可读标签?
##########编辑添加:##########
我也试过这个,但无济于事:
mosaic(y ~ x, data= a, labeling_list= list(gp_text= gpar(las= 2)))
Run Code Online (Sandbox Code Playgroud)
和
mosaic(y ~ x, data= a, labeling_list= list(rot_labels = c(0,90,0,0)))
# Actually placed the "90" in the 4 positions …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的 data.table:
library(data.table)
dt <- data.table(a = c(rep("A", 3), rep("B", 3)), b = c(1, 3, 5, 2, 4, 6))
Run Code Online (Sandbox Code Playgroud)
我需要对 each 的值执行操作(预测)a,所以我决定将它们放在一个列表中,如下所示:
dt <- dt[, x := .(list(b)), by = a][, .SD[1,], by = a, .SDcols = "x"]
Run Code Online (Sandbox Code Playgroud)
现在我想“融化”(这是我想到的东西)dt回到原来的形式。
我可以在很少的级别上做到这a一点:
dt2 <- rbind(expand.grid(dt[1, a], dt[1, x[[1]]]), expand.grid(dt[2, a], dt[2, x[[1]]]))
Run Code Online (Sandbox Code Playgroud)
但当然,该解决方案对于更多级别的a.
我试过了
dt2 <- dt[, expand.grid(a, x[[1]]), by = a]
Run Code Online (Sandbox Code Playgroud)
这导致
dt2
## a Var1 Var2
## 1: A A 1
## …Run Code Online (Sandbox Code Playgroud) r ×10
data.table ×4
regex ×2
dplyr ×1
forecasting ×1
ggplot2 ×1
gridextra ×1
grob ×1
gsub ×1
intersect ×1
latex ×1
list ×1
mosaic-plot ×1
plot ×1
r-markdown ×1
string-split ×1
stringi ×1
vcd ×1