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

R 使用数据帧行作为函数参数,r,ggplot2,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 }

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

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 
}
无论如何,我正在摸索如何有效地使用这个新函数,而不会导致列表循环。欢迎指点

试试这个

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

我不确定我是否建议将此作为一种策略,但您可以使用
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 
}

您能显示
str(df)
head(df)
?我无法理解
corn
是一个数据帧还是一行的一部分…添加
df谢谢。这很有效。如果我像你一样直接传入字符向量,并对df使用
get
函数,它将按照我的意愿工作。我甚至可以在
mapply
之外创建和命名字符向量,但是如果字符向量在数据帧中绑定在一起,我似乎无法通过引用colname来传递这些向量。例如:
data2@tjbrooks,您的列名似乎有输入错误,
data2$x3
应该是
data2$x3
。如果您使用的是
mappy
,则需要使用
SIMPLIFY=FALSE
,这就是为什么我使用
Map
,它是
mappy(…,SIMPLIFY=FALSE)
mapply(makeline,get(row1[,1]),row1[,2],row1[,3])
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 
}
data(mtcars)
data(diamonds)

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