簡體   English   中英

因子范圍作為R中的函數變量

[英]factor range as function variable in R

我有代碼

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類型為factorDate_mPOSIXct ,其他為num

這是可重現的數據(我只剩下了三列, dput在以后的問題中使用函數dput ):

bywells <-
structure(list(Well_N = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L), .Label = c("KRT3", "KRT4"), class = "factor"), Date_m = structure(c(16251, 
16281, 16312, 16343, 16373, 16312, 16343, 16373, 16404), class = "Date"), 
    QOM = c(132, 36, 39, 211.274, 45, 108.37, 161.775, 30, 31.8
    )), class = "data.frame", row.names = c(NA, -9L), .Names = c("Well_N", 
"Date_m", "QOM"))

這是沒有功能的調用:

library(dplyr)
library(ggplot2)
library(magrittr)
qplot(x=Date_m, y=QOM, data = bywells %>% filter(Well_N == "KRT3"), geom="line")

這是函數:

pfun <- function(data,wellname) {
    qplot(x=Date_m, y=QOM, data=data %>% filter(Well_N == wellname), geom="line")
}

與相應的調用:

pfun(bywells,"KRT3")

您的錯誤是在過濾數據的條件下將引號放在變量wellname上。 另外,您的顏色設置也不正常,因為沒有這樣的顏色,稱為“ Oil,m3 / month”。 瞄准英語單詞,例如“ red”,“ blue”,有關更多變體,請參見colors() 為了使顏色起作用,應在es參數外設置顏色。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM