在R中通过使用函数

时间:2018-05-20 08:41:45

标签: r plotly r-plotly

我正在尝试通过函数使用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 :(得分:0)

也许是这样的?

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")

如果数据是一个tibble,它显然不会渲染任何东西,所以你必须使用dataset[,summvar])[[1]]获取值,或者你也可以转换为矩阵。