小编Jul*_*gio的帖子

如何更改包含模式的行的第一次出现?

我需要找到第一次出现模式的行,然后我需要用一个全新的行替换整行。

我发现这个命令替换了模式的第一次出现,但不是整行:

sed -e "0,/something/ s//other-thing/" <in.txt >out.txt
Run Code Online (Sandbox Code Playgroud)

如果 in.txt 是

one two three
four something 
five six
something seven
Run Code Online (Sandbox Code Playgroud)

结果我进入了out.txt:

one two three
four other-thing
five six
something seven
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试修改此代码以替换整行时,如下所示:

sed -e "0,/something/ c\COMPLETE NEW LINE" <in.txt >out.txt
Run Code Online (Sandbox Code Playgroud)

这是我在 out.txt 中得到的:

COMPLETE NEW LINE
five six
something seven
Run Code Online (Sandbox Code Playgroud)

你知道为什么第一行丢失了吗?

sed

9
推荐指数
2
解决办法
189
查看次数

如何在 ggplot2 中绘制函数系列

我需要绘制一组根据一组参数变化的函数,例如,一组依赖于均值和标准差的正态分布曲线。我在这里找到一个几乎可以完成任务的代码片段:

p9 <- ggplot(data.frame(x = c(0, 1)), aes(x = x)) +
    stat_function(fun = dnorm, args = list(0.2, 0.1),
                  aes(colour = "Group 1")) +
    stat_function(fun = dnorm, args = list(0.7, 0.05),
                  aes(colour = "Group 2")) +
    scale_x_continuous(name = "Probability",
                          breaks = seq(0, 1, 0.2),
                          limits=c(0, 1)) +
    scale_y_continuous(name = "Frequency") +
    ggtitle("Normal function curves of probabilities") +
    scale_colour_brewer(palette="Accent") +
    labs(colour = "Groups")
p9 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,代码正好绘制了两条曲线,如下所示:

两条曲线

我的问题是系列中的曲线数量可以是任意的,因此我尝试按如下方式调整代码:

aa <- list(list(0.2, 0.1), list(0.7, 0.05), list(0.45, 0.2))
p9 <- …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2

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

嵌套ifelse:改进的语法

描述

ifelse() 函数允许通过一系列测试过滤向量中的值,每个测试都会产生不同的操作.例如,xx设为data.frame,如下所示:

xx <- data.frame(a=c(1,2,1,3), b=1:4)
xx
Run Code Online (Sandbox Code Playgroud)

ab
1 1
2 2
1 3
3 4

假设您要从列b创建新列c,但是根据以下方式列a中的值:

对于每一行,

  • 如果列a中的值为1,则列c中的值与列b中的值相同.
  • 如果列a中的值为2,则列c中的值是列b中值的100倍.
  • 在任何其他情况下,列c中的值是列b中值的负数.

使用ifelse(),解决方案可能是:

xx$c <- ifelse(xx$a==1, xx$b, 
               ifelse(xx$a==2, xx$b*100,
                      -xx$b))
xx
Run Code Online (Sandbox Code Playgroud)

abc
1 1
2 2 2 200
1 3 3
3 4 -4

问题1

当测试数量增加时,例如四个测试会出现美学问题:

xx$c <- ifelse(xx$a==1, xx$b, 
           ifelse(xx$a==2, xx$b*100,
                  ifelse(xx$a==3, ..., …
Run Code Online (Sandbox Code Playgroud)

syntax if-statement nested r vectorization

4
推荐指数
2
解决办法
507
查看次数

标签 统计

r ×2

ggplot2 ×1

if-statement ×1

nested ×1

plot ×1

sed ×1

syntax ×1

vectorization ×1