【发布时间】:2014-08-06 06:48:15
【问题描述】:
我有代码
ggplot(bywells[bywells$Well_N == "KRT3",], aes(x = Date_m)) +
geom_line(aes(y = QOM, colour = "Oil, m3/month"))
其中绘制图表。此代码可以正常工作,没有任何错误。现在我想在bywells是变量data和"KRT3"是变量wellname的函数中详细说明,但是如果我这样写
simple_fun <- function(data, wellname, ...)
{
require("ggplot2", quietly=TRUE)
ggplot(data[data$Well_N == "wellname",], aes(x = Date_m)) +
geom_line(aes(y = QOM, colour = "Oil, m3/month"))
}
执行函数后我收到错误消息
Error: Aesthetics must either be length one, or the same length as the dataProblems:QOM, Date_m
当我尝试时
ggplot(data[wellname == Well_N %in% data,], aes(x = Date_m))
我明白了
Error in match(x, table, nomatch = 0L) : object 'Well_N' not found
任何提示如何正确地将其定义为变量?
例如可重复性,我添加了一小块数据样本:
"Well_N";"Date_m";"QOM";"QWM";"QOMT";"BHP";"PRES";"QIW";"THPI";"QFM";"WCT"
"KRT3";2014-06-30;132;525;108;NA;NA;NA;NA;657;79
"KRT3";2014-07-30;36;120;29;NA;NA;NA;NA;156;76
"KRT3";2014-08-30;39;2.6;32.1;NA;NA;NA;NA;41.6;6.25
"KRT3";2014-09-30;211.274;749.362;174.070;NA;NA;NA;NA;960.636;78
"KRT3";2014-10-30;45;45;37.07;NA;NA;NA;NA;90;50
"KRT4";2014-08-30;108.37;1815.358;90.79;NA;NA;NA;NA;1923.73;94
"KRT4";2014-09-30;161.775;202.87;133;NA;NA;NA;NA;364;55
"KRT4";2014-10-30;30;1680;24;NA;NA;NA;NA;1710;98
"KRT4";2014-11-30;31.8;339;26;NA;NA;NA;NA;370.8;91
Well_N 的类型为factor,Date_m 为POSIXct,其他为num。
【问题讨论】:
-
请提供一个可重现的例子。
-
wellname参数有什么意义,如果你不使用它? -
@RomanLuštrik,也许我在某个地方迷路了——我不是程序员。我只是想实现这个函数可以被称为 simple_fun(mydataframe, AnyWellName)。在我的数据中,我有 93 个水平的因子 Well_N。
-
这里有一些关于如何使您的问题可重现的提示。 stackoverflow.com/questions/5963269/…这个函数是怎么运行的?
-
阅读我之前发布的主题。关于如何向我们提供数据有很多提示。考虑到我们是懒惰的人。