首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中创建一个广义函数

在R中创建一个广义函数
EN

Stack Overflow用户
提问于 2020-09-10 20:51:06
回答 1查看 73关注 0票数 3
代码语言:javascript
复制
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个向量,该函数将产生相应的输出;这意味着该函数将运行两个向量,而忽略其余的向量。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-10 21:09:57

也许您可以使用...作为函数参数,例如,

代码语言:javascript
复制
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
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63837516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档