小编Ben*_*Ben的帖子

如何在复杂的文本文件中替换shell变量

我有几个文本文件,其中我引入了shell变量(例如$ VAR1或$ VAR2).

我想将这些文件(逐个)保存在新文件中,其中所有变量都已被替换.

为此,我使用了以下shell脚本(在StackOverflow上找到):

while read line
do
    eval echo "$line" >> destination.txt
done < "source.txt"
Run Code Online (Sandbox Code Playgroud)

这在非常基本的文件上非常有效.

但是对于更复杂的文件,"eval"命令做得太多了:

  • 以"#"开头的行将被跳过

  • XML文件解析导致大量错误

有没有更好的方法呢?(在shell脚本中......我知道这很容易用Ant完成)

亲切的问候

linux shell

61
推荐指数
6
解决办法
6万
查看次数

如何在ggplot中合并颜色,线条样式和形状图例

假设我在ggplot中有以下情节:

ggplot图

它是使用以下代码生成的:

x <- seq(0, 10, by = 0.2)
y1 <- sin(x)
y2 <- cos(x)
y3 <- cos(x + pi / 4)
y4 <- sin(x + pi / 4)
df1 <- data.frame(x, y = y1, Type = as.factor("sin"), Method = as.factor("method1"))
df2 <- data.frame(x, y = y2, Type = as.factor("cos"), Method = as.factor("method1"))
df3 <- data.frame(x, y = y3, Type = as.factor("cos"), Method = as.factor("method2"))
df4 <- data.frame(x, y = y4, Type = as.factor("sin"), Method = as.factor("method2"))

df.merged <- rbind(df1, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

48
推荐指数
5
解决办法
3万
查看次数

当ggplot2中有多个图有一些图例而其他图没有图例时,可以对齐多个图

我使用此处指示的方法来对齐共享相同横坐标的图形.

但是当我的一些图表有一个传奇而其他图表没有传说时,我无法使它工作.

这是一个例子:

library(ggplot2)
library(reshape2)
library(gridExtra)

x = seq(0, 10, length.out = 200)
y1 = sin(x)
y2 = cos(x)
y3 = sin(x) * cos(x)

df1 <- data.frame(x, y1, y2)
df1 <- melt(df1, id.vars = "x")

g1 <- ggplot(df1, aes(x, value, color = variable)) + geom_line()
print(g1)

df2 <- data.frame(x, y3)
g2 <- ggplot(df2, aes(x, y3)) + geom_line()
print(g2)

gA <- ggplotGrob(g1)
gB <- ggplotGrob(g2)
maxWidth <- grid::unit.pmax(gA$widths[2:3], gB$widths[2:3])
gA$widths[2:3] <- maxWidth
gB$widths[2:3] <- maxWidth
g <- arrangeGrob(gA, gB, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

24
推荐指数
5
解决办法
5477
查看次数

如何构建一个多模块Maven项目来立即编译它?

我有一个包含多个模块和子模块的Maven项目,我想立即编译它,即只使用一次调用"mvn clean install".

对于基本项目,以下结构将起作用:

.
??? modules
?   ??? moduleA
?   ?   ??? pom.xml <--- Module A POM
?   ??? moduleB
?   ?   ??? pom.xml <--- Module B POM
?   ??? pom.xml     <--- Super POM (at the root of "modules" folder)
??? pom.xml         <--- Aggregator POM
Run Code Online (Sandbox Code Playgroud)

聚合器是:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.test</groupId>
    <artifactId>aggregator</artifactId>
    <packaging>pom</packaging>
    <version>1.0.0-SNAPSHOT</version>

    <modules>
        <module>modules</module>
        <module>modules/moduleA</module>
        <module>modules/moduleB</module>
    </modules>

</project>
Run Code Online (Sandbox Code Playgroud)

超级POM:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.test</groupId>
    <artifactId>super-pom</artifactId>
    <packaging>pom</packaging>
    <version>1.0.0-SNAPSHOT</version>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version> …
Run Code Online (Sandbox Code Playgroud)

maven-3 maven

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

使用带有facet_wrap的ggplot2显示不同的轴标签

我有一个包含不同变量和不同单位的时间序列,我想在同一个图上显示.

ggplot不支持多轴(如此处所述),所以我按照建议并尝试使用facet绘制曲线:

x <- seq(0, 10, by = 0.1)
y1 <- sin(x)
y2 <- sin(x + pi/4)
y3 <- cos(x)

my.df <- data.frame(time = x, currentA = y1, currentB = y2, voltage = y3)
my.df <- melt(my.df, id.vars = "time")
my.df$Unit <- as.factor(rep(c("A", "A", "V"), each = length(x)))

ggplot(my.df, aes(x = time, y = value)) + geom_line(aes(color = variable)) + facet_wrap(~Unit, scales = "free_y", nrow = 2)
Run Code Online (Sandbox Code Playgroud)

结果如下: 在此输入图像描述

事情是,只有一个y标签,说"值",我想要两个:一个带"电流(A)",另一个带"电压(V)".

这可能吗?

r ggplot2

21
推荐指数
2
解决办法
9393
查看次数

如何在R for Windows上使用Unix端行编写文件

我有一个R脚本,可以在Windows上创建一个文本文件.

我使用write.tablewrite函数来写入文件.

然后,我需要在Unix系统上使用此文件,但该文件具有Windows行尾字符(^ M).

是否可以在Windows上使用具有Unix行尾字符的R编写文件?

编辑

这是一个可重复的例子:

output.file <- file.path("./test.txt")

x <- c(1,2,3,4)
y <- c(5,6,7,8)
my.df <- data.frame(x, y)
my.df[] <- lapply(my.df, sprintf, fmt = "%14.7E")

write("First line", file = output.file)
write("Second line", file = output.file, append = TRUE)
write.table(my.df,
            row.names = FALSE,
            col.names = FALSE,
            file = output.file,
            quote = FALSE,
            append = TRUE,
            sep = "")
Run Code Online (Sandbox Code Playgroud)

结果,如NotePad ++所示:

在此输入图像描述

r

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

如何为ggplot2全局设置主题?

我创建了一个包含大量函数的包,可以生成ggplot图.

一开始,我使用了所有情节功能(灰色主题)的默认主题,但后来我发现黑白主题更加令人愉悦,并使用该主题开发了我最新的情节功能.

有没有办法全局设置ggplot2主题,即在一个地方,而不必在每次找到我想要应用于我所有情节的新主题时修改我的所有绘图功能?

r ggplot2

14
推荐指数
3
解决办法
2万
查看次数

如何控制knitr kable科学记数法?

我有一个这样的数据框:

> summary
  variable         value
1     var1  5.810390e-06
2     var2  5.018182e-06
3     var3  5.414286e-06
4     var4  3.000779e+02
5     var5 -2.105123e+01
6     var6  8.224229e-01
Run Code Online (Sandbox Code Playgroud)

我想用knitr/kable在word文档中打印它.因此我使用了以下功能:

knitr::kable(summary,
             row.names = FALSE,
             col.names = c("Variable", "Mean"))
Run Code Online (Sandbox Code Playgroud)

但结果并不令人满意:

在此输入图像描述

变量4到6我没关系,但变量1到3真的不容易这样读取...有没有办法控制这种格式?

r knitr

10
推荐指数
2
解决办法
3639
查看次数

如何从RMarkdown文档中正确编号Word中的标题

我正在创建一个RMarkdown文档,我想用RStudio导出MS Word.

我想要一个目录和编号标题.这是我的示例降价文档:

---
title: "Test"
author: "Ben"
date: "`r format(Sys.time(), '%d/%m/%Y')`"
output:
  word_document:
    toc: yes
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

# Header 1

## Header 2

## Header 2

### Header 3
Run Code Online (Sandbox Code Playgroud)

这会生成以下单词doc:

有待改善

这是一个好的开始.在本教程之后,我在Word中编辑了输出文档的标题样式以使其编号.

我还更改了目录标题标题,使其基于普通文本而不是另一个标题,否则目录标题也会被编号.

我将修改后的文档保存在模板文件夹中,并将其作为参考添加到markdown标题中:

---
title: "Test"
author: "Ben"
date: "`r format(Sys.time(), '%d/%m/%Y')`"
output:
  word_document:
    toc: yes
    reference_docx: "../templates/word-styles-reference-01.docx"
---
Run Code Online (Sandbox Code Playgroud)

这是输出:

更好

现在,我希望在我的目录之后有一个分页符,所以我按照这个其他教程并更改了我的标题6,使其为白色,非常小,基于正常样式,然后添加分页符.

新的markdown文件如下所示:

---
title: "Test"
author: "Ben"
date: "`r format(Sys.time(), '%d/%m/%Y')`"
output:
  word_document:
    toc: yes
    reference_docx: "../templates/word-styles-reference-01.docx"
---

```{r …
Run Code Online (Sandbox Code Playgroud)

r ms-word r-markdown

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

如何在数据框列表中使用devtools :: use_data?

我有一系列数据框,我想在我的包中保存为单独的.rda文件.

我可以使用,devtools::use_data(my.df1, my.df2...)但我没有每个数据框的命名对象,它们都存储在一个大的列表中.

我想要做的是为每个列表元素调用use_data并使用列表名称作为.rda文件名.但是,当我执行以下操作时,我收到一条错误消息:

> lapply(my.list, devtools::use_data, overwrite = TRUE)
Error: Can only save existing named objects
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

r devtools

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

标签 统计

r ×8

ggplot2 ×4

devtools ×1

knitr ×1

linux ×1

maven ×1

maven-3 ×1

ms-word ×1

r-markdown ×1

shell ×1