r列出强制回收物品

时间:2018-10-20 18:21:28

标签: r list

noob问题;) 我如何强制列表回收功能中的条件? 当我运行

mylist <- list(a = 3, b = c(2,8), c = c(1,4))
sumit<-function(v){x<-v$a + v$b + v$c}
x<-sumit(mylist)

它当然正确返回6和15(回收mylist $ a)。但是如果我想跑步

sumit<-function(v){
  x<-v$a + v$b + v$c
  if (v$c ==1) x<-x*100
  }
x<-sumit(mylist)

它不希望回收条件,并且在两种情况下mylist$c = 1都使用600和1500而不是600和15

您如何强制它回收参数?我已经从rebus库中看到了回收功能,但是它与我使用的其他几个软件包有冲突,并且我不想将$c移至参数,因为在此过程中我不知道列表的哪个元素将具有什么长度-有时c可能有3个值,有时b等等。

我不希望通过将列表分为3个向量将其拆分为sumit(a,b,c)

1 个答案:

答案 0 :(得分:1)

您想要ifelse

mylist <- list(a = 3, b = c(2,8), c = c(1,4))
sumit<-function(v){x<-v$a + v$b + v$c}
x<-sumit(mylist)

sumit<-function(v){
  x<-v$a + v$b + v$c
  x <- ifelse (v$c ==1, x*100,x)
}
x<-sumit(mylist)
x
# [1]  600 15

if适用于单长度逻辑,在其他情况下采用第一个元素,ifelse适用于矢量。