使用数据帧行作为函数参数

时间:2013-03-12 04:18:27

标签: r ggplot2

我正在尝试自动化一些图形,而不是诉诸传统的循环。我很难弄清楚如何传递一行数据帧的元素作为函数的参数。该函数如下所示:

makeline  <- function(df, var, date, ylab="",xlab="", title="", nbershade=TRUE) {
p <- ggplot(df, aes_string(x=date, y=var)) 
p <- p  + geom_line()

# do some other magical things 
}

假设我有一行数据框如下:

row1 <- c("corn","Price","Date")

因为玉米是一个数据帧ggplot,它作为一个字符被扼杀。然后我使用没有引号的玉米,因为它是一个列名为“Price”和“Date”的数据框,我认为这样可行:

mapply(makeline,row1[1],row1[2],row1[3])

无论如何,我正在摸索试图有效地使用这个新功能而不会导致循环遍历列表。任何指针赞赏。

2 个答案:

答案 0 :(得分:1)

我不确定是否会将此作为策略推荐,但您可以使用get来获取data.frame

makeline  <- function(df, var, date, ylab="",xlab="", title="", nbershade=TRUE) {
  df <- get(df)
  p <- ggplot(df, aes_string(x=date, y=var)) 
  p <- p  + geom_line()

# do some other magical things 
}

您可能需要调整get的环境才能始终如一地工作,但它有inherits = TRUE来处理大多数事情

data(mtcars)
data(diamonds)

Map(makeline, df = c('mtcars','diamonds'), var = c('cyl','x'), date = c('mpg','y'))

答案 1 :(得分:0)

试试这个

mapply(makeline,get(row1[,1]),row1[,2],row1[,3])