如何在ggplot2中修复数据帧

时间:2019-04-21 16:53:52

标签: r ggplot2

我正在尝试通过ggplot2软件包从数据库中绘制15个变量中的13个。但是,当我调用该函数时,出现与数据有关的错误。

代码是这样的:

dfplot.2 <- function(col)
{
  df <- my.data[,2:14]
  ln <- length(df)
  for(i in 1:ln){
    if(is.factor(df[,i])){
      ggplot(data=df[,i],aes(names(df)[i])) + geom_bar(width =0.5,fill="blue", colour="black")
     + ggtitle(paste("Distribucion de",names(df)[i]))}
    else{ggplot(data=df[,i], aes(names(df)[i])) + geom_histogram(fill="red", colour="black")
      + ggtitle(paste("Distribucion de",names(df)[i]))}
  }
}
dfplot.2(my.data)

结果是:

  

错误:data必须是数据帧或fortify()可强制执行的其他对象,而不是数字矢量。

但是以前我的数据库是使用as.data.frame(my.data)函数转换为数据框的。

1 个答案:

答案 0 :(得分:0)

@鲍里斯。如果您包含创建my.data的代码,我们也许可以弄清楚。

这里似乎发生了几件事。该函数在其父范围内引用数据结构。它不接受数据帧作为参数。该错误表明您可能不再在全局环境中使用my.data。

同时,建议您检查变量的数据类型,并查看ggplot2认为它是什么。以下功能可用于检查。在调用ggplot之前,将这些打印语句放入函数中。 head()命令将输出变量df中前几行。

print(class(df))
print(str(df))
print(head(df))

您可以在已安装的帮助页面上找到有关这些功能的更多信息。

?class
?str
?head

您的函数具有一个从未使用过的参数col。也许您打算将参数中的数据框传递给函数?

输出调试语句以揭示变量内容的编程技术称为跟踪。如果您发现您需要做很多事情,那么就值得考虑使用某种脚手架来打开和关闭这些print()语句。

一旦获得调试问题的答案,一些简短的痕迹(如我建议的痕迹)就很容易删除。这项研究非常有用,该技术可以帮助您找到许多自己的答案。祝你好运。