eval(expr,envir,enclos)中的错误:找不到对象'变量' - ggplot2

时间:2018-04-27 01:42:46

标签: r ggplot2

我需要帮助才能为我的数据制作ggplot2图。这是我在R。

中的脚本
> library(reshape2)
> library(ggplot2)
mdat = read.csv(file = "~/Desktop/final_data/low_group.csv", header = TRUE, sep="\t") 
> head(mdat)
         day..variable..value
1 Day 0, Actinobacteria,0.187
2 Day 3, Actinobacteria,0.117
3 Day 6, Actinobacteria,0.153
4 Day 9, Actinobacteria,0.147
5  Day 0, Bacteroidetes,0.154
6  Day 3, Bacteroidetes,0.364
> ggplot(mdat, aes(variable, value, fill=day)) + 
+     geom_bar(stat="identity", position="dodge") +
+     scale_alpha_discrete(range = c(0.5,1)) +
+     theme_minimal()
Error in eval(expr, envir, enclos) : object 'variable' not found

任何建议请!!非常感谢你。

2 个答案:

答案 0 :(得分:2)

正如评论中提到的那样,问题在于你有一个以逗号分隔的文件(csv),但你正在阅读它,好像它是以制表符分隔的方式。我可以重现您的问题,然后通过正确读取文件来纠正它。

首先,我创建一个简单的csv文件:

df <- data.frame(day = c("Day 0", "Day 3", "Day 6"),
                 variable = c("Actinobacteria", "Actinobacteria", "Actinobacteria"),
                 value = c(0.187, 0.117, 0.153))
write.table(df, "low_group.csv", row.names = FALSE, sep = ", ")

现在,我以sep="\t"(以制表符分隔)的方式阅读。列标题day..variable..value中出现错误的告示标志是单个字符串,因此数据框mdat只包含一列:

mdat <- read.csv(file = "low_group.csv", header = TRUE, sep="\t") 
head(mdat)
#           day..variable..value
# 1 Day 0, Actinobacteria, 0.187
# 2 Day 3, Actinobacteria, 0.117
# 3 Day 6, Actinobacteria, 0.153

如果我们尝试绘制此图,则会出现错误。 (我的错误信息略有不同,因为我运行了ggplot2的开发版本。)

ggplot(mdat, aes(variable, value, fill=day)) + geom_col()
# Error in FUN(X[[i]], ...) : object 'variable' not found

现在让我们正确地做,没有sep="\t"。现在我们在数据框中得到三个单独的列,我们可以绘制它们。

mdat <- read.csv(file = "low_group.csv", header = TRUE) 
head(mdat)
#     day        variable value
# 1 Day 0  Actinobacteria 0.187
# 2 Day 3  Actinobacteria 0.117
# 3 Day 6  Actinobacteria 0.153
ggplot(mdat, aes(variable, value, fill=day)) + geom_col()

enter image description here

答案 1 :(得分:1)

找不到对象variable。您将variable作为data参数传递给ggplot,但它不存在。一旦将数据拆分为三列而不是一列,请尝试使用ggplot(mdat)