2010-03-19 99 views
6

我在R中创建了一个情节,并且需要为某些轴标签添加连字符,而不是您的日常连字符。如何在R中添加连字符?

axis(1, at=c(0:2), labels=c("0-10","11-30","31-70")) 

我在Linux上运行R版本2.8.1。

回答

1

您正在使用Linux,因此取决于R如何理解unicode,您可以将其中一个备用键盘键映射到Compose Key,然后将其键入。要获得 - ,请按下Compose键,然后按常规键两到三次(具体取决于您的系统映射)。请注意,使用撰写键时,请勿按住 - 只需按键即可。

准确地说你会如何启用,但在Ubuntu系统 - >首选项 - >键盘,布局选项卡,布局选项按钮,并选择适当的“撰写键位置”项目。我通常使用菜单键。

编辑:我的错误,你想要一个破折号,而不是一个em-dash。然后,en-dash( - )是撰写短划线的时间段,而不是撰写短划线短划线。

+0

谢谢。我尝试复制并粘贴到标签中,但导致“错误:解析器中x行无效的多字节字符”。在另一个说明中,print(“\ 55”)会给我一个ASCII连字符,但是连字符是扩展ASCII,这是我遇到的麻烦。打印(“\ 150”)应该做的伎俩(我按谷歌搜索的ASCII表),但没有骰子。 – Banjer 2010-03-19 17:32:22

+0

@Banjer - 我刚刚在Ubuntu 9.10的R 2.9.2版本中试过,并且直接复制破折号并直接输入,并正确显示在轴上。也许你应该更新R? – kwatford 2010-03-19 18:17:47

+1

为了清楚起见,当我从repl中输入它时它起作用。如果你想把它放在源文件中,你需要确保源文件使用合适的编码。你可以在像gedit这样的文本编辑器中打开它,然后在“另存为”对话框中选择UTF-8或其他东西。 – kwatford 2010-03-19 18:26:54

2

在这个例子中,你可以使用expression()函数来获取连接正确呈现破折号:

axis(1, 
    at=c(0:2), 
    labels=c(expression(0-10), 
       expression(11-30), 
       expression(31-70))) 
+0

谢谢ayman,但这似乎不适用于我。我再次收到“无效多字节字符”错误。我也尝试在各个地方添加引号。 – Banjer 2010-03-22 12:22:49

0

老问题,但仍然是一个问题......

我,使用R VSN 3.3.2在OSX 10.12.2上,用plot()绘制到我导入到Affinity Designer vsn 1.5.4的pdf文件中。形如“2-0”的轴标签显示在Affinity Designer中,破折号与“0”重叠。我不知道问题出在Affinity Designer或pdf文件上或者是什么。能够尝试各种Unicode短划线字符会很好,但是R和pdf文件似乎还没有完全配备使用默认字体来处理Unicode。

解决方案:“开罗”包中R:

library("cairo") 
d = 0:11 
names(d) = paste(0:11, "-", 11:0, sep="") 
names(d) = gsub("-", "\U2012", names(d)) # U+2012 is "figure dash" 
d 
barplot(d) 
cairo_pdf(filename="x.pdf", width=11, height=8) 
barplot(d) 
dev.off() 

破折号在R控制台显示,默认ř打印设备,并与两个预览和亲和设计器观察的PDF文件。