缺少值时,在粘贴中禁止分隔符

use*_*672 6 r paste ggplot2

这是我读入数据帧的数据结构.

treatment  egf       mean      se
10 uM PP2            -697.25   14124.349
10 uM PP2  1 nM EGF  14715.50  8862.012
DMSO                 58589.25  7204.824
DMSO       1 nM EGF  87852.00  12149.159
Run Code Online (Sandbox Code Playgroud)

treatment和egf列的组合表示每列的唯一ID.我想创建一个组合这些列的列,以便我可以有一个唯一代表每一行的列.但是,由于EGF列中缺少值,当我使用粘贴时,它会解决这个烦人的问题:

>paste(rawp$treatment, rawp$egf, sep=" + ")
[1] "10 uM PP2 + "         "10 uM PP2 + 1 nM EGF" "DMSO + "             
[4] "DMSO + 1 nM EGF"
Run Code Online (Sandbox Code Playgroud)

当值丢失时,它仍然会将分隔符放在那里.我想读它:

[1] "10 uM PP2"         "10 uM PP2 + 1 nM EGF" "DMSO"             
[4] "DMSO + 1 nM EGF"
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

我想要这样做的全部原因是因为我想用ggplot绘制数据,而且在指定x轴时似乎只需要1个唯一的列.

ggplot(data=rawp, aes(x=treatment, y=mean)) + geom_bar(stat="identity")
Run Code Online (Sandbox Code Playgroud)

因此,如果您还知道使用组合列在x轴上指定类别的替代方法,那将会很有帮助.

Hon*_*Ooi 5

你可以在粘贴后删除"+":

sub(" \\+ $", "", paste(rawp$treatment, rawp$egf, sep=" + "))
Run Code Online (Sandbox Code Playgroud)


flo*_*del 5

使用它会很好,sep = ifelse(egf == "", "", " + ")sep参数paste不能成为矢量.解决方案:将其作为常规参数传递!

with(rawp, paste0(treatment, ifelse(egf == "", "", " + "), egf))
Run Code Online (Sandbox Code Playgroud)