【发布时间】:2015-11-03 23:11:50
【问题描述】:
假设我有一个用户定义的乐趣
fun <- function(i,j,k){}
我正在寻找一个函数(),
function(fun, c(x1, x2), c(y1,y2), c(z1,z2))
执行为
fun(x1,y1,z1)
fun(x1,y2,z1)
fun(x2,y1,z1)
fun(x2,y2,z1)
fun(x1,y1,z2)
fun(x1,y2,z2)
fun(x2,y1,z2)
fun(x2,y2,z2)
我虽然申请家庭可以做这项工作。但是我没有找到合适的。
================================================ =======================
这是我正在研究的一个真实示例,但仍然无法解决。
data <- read.table(header = TRUE, stringsAsFactors = FALSE,
text = "ID x1 x2 y1 y2
1 a T 100 2
2 b T 210 4
3 b F 112 5
4 a F 121 1
5 b F 412 1")
boxplot <- function(i,j){
print(ggplot(data,
aes_string(x=colnames(data)[i],
y=colnames(data)[j],
col=colnames(data)[i]))+
geom_boxplot())
}
那么您可以使用boxplot(2,4) 来绘制绘图,boxplot(3,4)、boxplot(2,5)、boxplot(3,5) 也是如此。
然后我从答案中尝试了 do.call 和 apply 方法。
do.call(boxplot, as.list(unname(expand.grid(c(2, 3), c(4,5)))))
或
apply(expand.grid(c(2,3), c(4,5)),1,boxplot)
但是它们没有按预期工作。 do.call 方法只返回一个图,应用一个返回 8 个图,但都以 y 轴为 ID。
================================================ =======
for 循环使它工作。有cmets吗?
for (i in 2:3) {
for (j in 4:5) {
boxplot(i,j)
}
}
【问题讨论】: