下面是我编写的示例数据和函数(barplot2
)。您会注意到barplot2
仅计算坐标,然后使用polygon
命令。现在,我只在函数中为lwd
和col
指定了参数,可以传递给函数内的polygon
命令。但是polygon
命令已经能够接受多个arguments
,例如density
,border
,angle
等。是否有正确的方法来编写我的函数所以我不必单独枚举所有arguments
并仍然可以使用它们。
set.seed(100)
Mydata = rnorm(65)
Year = 1950:2014
plot(Year, Mydata, type = 'p', pch = NA, xlab = "", ylab = "")
barplot2 <- function(x, y, lwd = 1, col = "grey"){
w = ((max(x) - min(x))/length(x)) * 0.75
for (i in 1:length(x)){
x1 = x[i] - w/2
x2 = x[i] + w/2
y1 = 0
y2 = y[i]
polygon(x = c(x1,x2,x2,x1), y = c(y1,y1,y2,y2), lwd = lwd, col = col)
}
}
barplot2(Year,Mydata)
答案 0 :(得分:1)
我很确定@manotheshark有你正在寻找的解决方案,但我会扩展它。
将功能更改为
barplot2 <- function(x, y, lwd = 1, col = "grey",...){
w = ((max(x) - min(x))/length(x)) * 0.75
for (i in 1:length(x)){
x1 = x[i] - w/2
x2 = x[i] + w/2
y1 = 0
y2 = y[i]
polygon(x = c(x1,x2,x2,x1), y = c(y1,y1,y2,y2), lwd = lwd, col = col,...)
}
}
这应该会给你你想要的结果。
编辑: 可以像这样指定其他选项
Barplot2(Year,Mydata, angle=45,lty = 2)
继续这种方式,所有参数都将传递给面函数。
答案 1 :(得分:0)
使用test
能够将未分配的参数传递给函数