6

在ggplot生成的图中,沿x轴的每个标签都是一个字符串,即“1990年的产品”。但是,生成的情节在每个单词之间都有一个句点。也就是说,上面的字符串显示为“the.product.in.1990”</p>

我怎样才能确保上面的“。” 是不是加了?

以下代码是我用来为沿 x 轴的每个点添加字符串的代码

last_plot()+scale_x_discrete(limits=ddata$labels$text)

示例代码:

library(ggdendro)
x <- read.csv("test.csv",header=TRUE) 
d <- as.dist(x,diag=FALSE,upper=FALSE) 
hc <- hclust(d,"ave") 
dhc <- as.dendrogram(hc) 
ddata <- dendro_data(dhc,type="rectangle")
ggplot(segment(ddata)) + geom_segment(aes(x=x0,y=y0,xend=x1,yend=y1))
last_plot() + scale_x_discrete(limits=ddata$labels$text)

每一行ddata$labels$text都是一个字符串,例如“the product in 1990”。我想在生成的图中保持相同的格式,而不是“the.product.in.1990”

4

1 回答 1

16

出现此问题是因为您试图读取列名包含空格的数据。

当您读取这些列名的数据时,read.csv这些列名将转换为语法上有效的 R 名称。下面是一个例子来说明这些问题:

some.file <- '
    "Col heading A", "Col heading B"
    A, 1
    B, 2
    C, 3
    '

使用默认read.csv设置读取它:

> x1 <- read.csv(text=some.file)
> x1
  Col.heading.A Col.heading.B
1             A             1
2             B             2
3             C             3
4                          NA
> names(x1)
[1] "Col.heading.A" "Col.heading.B"

为避免这种情况,请使用参数check.names=FALSE

> x2 <- read.csv(text=some.file, check.names=FALSE)
> x2
  Col heading A Col heading B
1             A             1
2             B             2
3             C             3
4                          NA
> names(x2)
[1] "Col heading A" "Col heading B"

现在,剩下的问题是列名不能包含空格。因此,要引用这些列,您需要将列名包含在反引号中:

> x2$`Col heading A`
[1]     A     B     C      
Levels:          A     B     C

有关详细信息,请参阅?read.csv特别是 的信息check.names

还有一些关于反引号的信息?Quotes

于 2011-12-08T20:16:49.097 回答