Плотно в R, передавая переменную через функцию - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь создать кольцевую диаграмму, используя plotly через функцию, чтобы я мог изменять переменные вокруг.

Следующий код возвращает без диаграммы , но также без ошибок:

library(plotly)
library(dplyr)

function_ringchart<- function(dataset, labvar, summvar){
summvar_temp <- enquo(summvar)
labvar_temp <- enquo(labvar)
p<- plot_ly(data = dataset, labels = ~labvar_temp, values = ~summvar_temp , type ="pie",hole = 0.6)
p
}

function_ringchart(df, "person","msgcount")

Однако следующий код работает нормально, и возвращает правильный график (без изменения переменной значений):

function_ringchart<- function(dataset, labvar){
#summvar_temp <- enquo(summvar)
labvar_temp <- enquo(labvar)
p<- plot_ly(data = dataset, labels = ~labvar_temp, values = ~msgcount, type ="pie",hole = 0.6)
p
}

function_ringchart(df, "person")

Интересно, в чем причинапервый набор кода не работает, или как правильно использовать переменные входные данные для values =~ компонента plot_ly?

1 Ответ

0 голосов
/ 20 мая 2018

Может быть, что-то вроде этого?

function_ringchart<- function(dataset, labvar, summvar){ 
  plot_ly(data = dataset, labels = dataset[,labvar])[[1]],
              values = dataset[,summvar])[[1]], type ="pie",
              hole = 0.6) 

} 
function_ringchart(economics, labvar = "date",  summvar = "pop")

Если данные в виде таблицы, они, очевидно, ничего не рендерит, поэтому вам нужно либо получить значения с помощью dataset[,summvar])[[1]], либо вы можете преобразовать вматрица также

...