В именах столбцов вставлены точки, где должны быть пробелы - PullRequest
5 голосов
/ 08 декабря 2011

На графике, сгенерированном ggplot, каждая метка вдоль оси x является строкой, то есть «продукт в 1990 году».Однако в сгенерированном сюжете есть промежуток между каждым словом.Другими словами, приведенная выше строка отображается как «the.product.in.1990»

Как я могу убедиться, что вышеуказанный «.» Не добавлен?

Следующий кодиспользуется для добавления строки для каждой точки вдоль оси 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 является строкой, как «продукт 1990 года»,Я хотел бы сохранить тот же формат в сгенерированном графике, а не "the.product.in.1990"

1 Ответ

15 голосов
/ 09 декабря 2011

Проблема возникает из-за того, что вы пытаетесь прочитать данные с именами столбцов, которые содержат пробелы.

Когда вы читаете эти данные с помощью 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

...