对于数据框:
exampleDF <- structure(list(val1 = structure(c(1L, 2L, 1L, 3L), .Label = c("MX",
"SS", "VF"), class = "factor"), var2 = c(1, 2, 3, 4)), .Names = c("val1",
"var2"), row.names = c(NA, -4L), class = "data.frame")
而不是:
ddply(exampleDF, .(val1), summarize, sum(as.numeric(var2)))
是否可以参数化ddply
调用(如下所示,尽管我尝试了但不起作用):
colname <- 'var2'
ddply(exampleDF, .(val1), summarize, sum(as.numeric(colname)))
导致..
val1 ..1
1 MX NA
2 SS NA
3 VF NA
Warning messages:
1: In eval(expr, envir, enclos) : NAs introduced by coercion
2: In eval(expr, envir, enclos) : NAs introduced by coercion
3: In eval(expr, envir, enclos) : NAs introduced by coercion
我们必须为数据框中的一组列调用ddply
,并为ddply
的每个结果生成图表。因此,我们希望参数化ddply
调用,而不是为n列重复相同的行
答案 0 :(得分:2)
这实际上是summarize
的挑战,而不是ddply
。您可以尝试使用parse
和eval
执行某些操作,但总的来说这不是一个好主意。我会做类似的事情:
colname <- 'var2'
ddply(exampleDF, .(val1), function(sub_dat) sum(as.numeric(sub_dat[[colname]])))
你说你想创建这样的多个图,但是,我几乎总能使用ggplot2
中的构面创建这样一组图(由同一作者plyr
创建)。参见例如facet_wrap
和facet_grid
的文档。