a<-c(0,1,1,0)
b<-c(1,0,0,0)
c<-c(0,0,0,1)
binary_subset<-function(a){
a_seq = lapply(a, seq, 0) # keep 0s as 0, make 1s c(1, 0)
subset=do.call(expand.grid, a_seq)
colnames(subset)=(1:length(a))
return(subset)
}
test_fun<-function(a,b,c,d){
list <- list(a,b,c,d)
interactions_abc<-do.call("rbind",lapply(list, binary_subset))
interactions_no_duplicate<-unique(interactions_abc[1:length(a)])
rownames(interactions_no_duplicate)=1:nrow(interactions_no_duplicate)
interactions_no_duplicate
}
>test_fun(a,b,c,d)
Error in test_fun(a, b, c, d) : object 'd' not found我正在尝试编写一个输入不固定的函数。我定义了4个二元向量的函数。如果输入3个二进制向量,就会得到一个错误,因为第四个向量丢失了。这将只有当我输入4个二进制向量时才能工作。
我怎么才能解决这个问题?意思是:如果输入2或3个向量,该函数将产生相应的输出;这意味着该函数将运行两个向量,而忽略其余的向量。
发布于 2020-09-10 21:09:57
也许您可以使用...作为函数参数,例如,
test_fun <- function(...) {
list <- list(...)
interactions_abc <- do.call("rbind", lapply(list, binary_subset))
interactions_no_duplicate <- unique(interactions_abc[1:length(list[[1]])])
rownames(interactions_no_duplicate) <- 1:nrow(interactions_no_duplicate)
interactions_no_duplicate
}https://stackoverflow.com/questions/63837516
复制相似问题