自动启用R函数内的命令以使用其参数(形式)

时间:2017-01-05 21:57:11

标签: r

下面是我编写的示例数据和函数(barplot2)。您会注意到barplot2仅计算坐标,然后使用polygon命令。现在,我只在函数中为lwdcol指定了参数,可以传递给函数内的polygon命令。但是polygon命令已经能够接受多个arguments,例如densityborderangle等。是否有正确的方法来编写我的函数所以我不必单独枚举所有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)

2 个答案:

答案 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能够将未分配的参数传递给函数