微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何绕过R中缺少的参数

如何解决如何绕过R中缺少的参数

我编写了一个程序,该程序使用多个向量作为参数。如果我输入单个向量作为输入,则该函数将提供以下错误消息:

{'gender': 'male','name/data': {'last/name': 'arabulut','first/name': 'Altay','parents/names': {'father/name': 'John','mother/name': 'Jennifer'}},'birthday/data': {'birthday/day': '01','birthday/month': '03','birthday/year': '1977'}}

我知道为什么我会收到此错误。我使用了选择2个向量的组合函数 combn 。我该如何解决?我想获得输出,即使我的输入是单个向量也是如此。在这种情况下,我希望我的代码跳过那些需要2个向量的行,然后运行其余的行以获得输出。为了方便起见,我在这里提供了整个代码

Error in combn(letters[1:length(mylist)],2) : n < m
Called from: combn(letters[1:length(mylist)],2)

解决方法

在没有至少两个向量的情况下,可以使用if语句跳过取决于combn的行:

all_lower_order_interactions <- function(...) {
  mylist <- list(...)
  if (length(mylist) >= 2) {
    {
      combination <-
        combn(letters[1:length(mylist)],2) #choose 2 out of L vectors
    }
    
    check_incomparable <- 0
    for (j in 1:ncol(combination)) {
      check_incomparable[j] <-
        (incomparable(get(combination[1,j]),get(combination[2,j])))
    }
    check_incomparable
    
    if (all(check_incomparable > 0) == FALSE) {
      stop("at least one of the interaction terms is a special case (or a subset) of another term.")
    }
  }
  interactions_abc <-
    do.call("rbind",lapply(mylist,binary_subset))
  interactions_no_duplicate <-
    unique(interactions_abc[1:length(mylist[[1]])])
  rownames(interactions_no_duplicate) <-
    1:nrow(interactions_no_duplicate)
  
  interactions_no_duplicate
}


a <- c(0,1,0)
b <- c(0,1)
all_lower_order_interactions(a)

  1 2 3
1 0 1 0
2 0 0 0
,

您可以尝试根据列表的长度设置combn的第二个参数。

替换

combination<-combn(letters[1:length(mylist)],2) #choose 2 out of L vectors

作者:

if (length(mylist) < 2) {
  n_elements <- 1
} else {
  n_elements <- 2
}

combination<-combn(letters[1:length(mylist)],n_elements)

编辑

要使用提供的变量名,请将最后一行更改为:

combination<-combn(names(mylist)[1:length(mylist)],n_elements)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。