ggplot: использовать переменную с aes (x = & hellip ;, y = & hellip;) [duplicate]

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
45
задан rpax 10 March 2014 в 21:20
поделиться

2 ответа

Вы можете использовать aes_string:

f <- function( column ) {
    ...
    ggplot( rates.by.groups, aes_string(x="name", y="rate", colour= column,
                                        group=column ) )
}

, пока вы передаете столбец функции как строку (f("majr"), а не f(majr)). Также обратите внимание, что мы изменили другие столбцы "name" и "rate", чтобы быть строками.

Если по какой-либо причине вы предпочитаете не использовать aes_string, вы можете изменить ее на (несколько более громоздкий):

    ggplot( rates.by.groups, aes(x=name, y=rate, colour= get(column),
                                        group=get(column) ) )
79
ответ дан David Robinson 19 August 2018 в 12:10
поделиться
  • 1
    Стоит сказать, что вы не должны / не можете делать aes_string(x = rates.by.groups$name..., и в любом случае вам не нужно, поскольку вы уже передали аргумент ggplot(data = rates.by.groups.... (Вопрос в этот вопрос ) – smci 12 June 2018 в 03:09

Попробуйте использовать aes_string вместо aes.

11
ответ дан Mason DeCamillis 19 August 2018 в 12:10
поделиться
  • 1
    Это отличный совет, но можете ли вы сказать им, почему? aes_string заставляет вас использовать & quot; & quot; для не-переменных, и вы используете переменные unquotes. aes_string (x = "foo", y = "fee", group = variable) – mtelesha 27 June 2018 в 18:32
Другие вопросы по тегам:

Похожие вопросы: