22
Tôi đang viết hàm liên quan đến hàm khác từ cơ sở R với nhiều đối số. Ví dụ (chức năng thực sự là lâu hơn nữa):cách chuyển đối số vào hàm trong một hàm trong r
myfunction <- function (dataframe, Colv = NA) {
matrix <- as.matrix (dataframe)
out <- heatmap(matrix, Colv = Colv)
return(out)
}
data(mtcars)
myfunction (mtcars, Colv = NA)
Các Heatmap có nhiều lý lẽ có thể được chuyển tới:
heatmap(x, Rowv=NULL, Colv=if(symm)"Rowv" else NULL,
distfun = dist, hclustfun = hclust,
reorderfun = function(d,w) reorder(d,w),
add.expr, symm = FALSE, revC = identical(Colv, "Rowv"),
scale=c("row", "column", "none"), na.rm = TRUE,
margins = c(5, 5), ColSideColors, RowSideColors,
cexRow = 0.2 + 1/log10(nr), cexCol = 0.2 + 1/log10(nc),
labRow = NULL, labCol = NULL, main = NULL,
xlab = NULL, ylab = NULL,
keep.dendro = FALSE, verbose = getOption("verbose"), ...)
Tôi muốn sử dụng những lập luận này mà không liệt kê chúng trong myfunction.
myfunction (mtcars, Colv = NA, col = topo.colors(16))
Error in myfunction(mtcars, Colv = NA, col = topo.colors(16)) :
unused argument(s) (col = topo.colors(16))
Tôi đã thử các sau đây nhưng không làm việc:
myfunction <- function (dataframe, Colv = NA) {
matrix <- as.matrix (dataframe)
out <- heatmap(matrix, Colv = Colv, ....)
return(out)
}
data(mtcars)
myfunction (mtcars, Colv = NA, col = topo.colors(16))
Chỉ cần thêm một tùy chọn (hoặc thêm nhầm lẫn), bạn có thể tăng thêm nội dung của '...' bằng cách thiết lập một biến bên trong hàm chính của bạn 'dotfuns <-list (..., other_variable)' và chuyển nó tới các hàm tiếp theo. Làm điều này có nguy cơ của riêng bạn :-) –
@CarlWitthoft xin lỗi tôi không thể có được những gì bạn có ý nghĩa, có thể giải pháp của bạn (có lẽ là câu trả lời) – jon
Đó không phải là câu trả lời cho vấn đề cụ thể của bạn được thực hiện với bộ sưu tập các đối số '...'. –