如何在列表中附加元素作为额外项目?

时间:2019-04-15 23:28:53

标签: r

我有一个函数,我想在列表中的每个条目中添加两个变量。我尝试了几种方法,但没有成功。

objs <- mget(ls("package:base"), inherits = TRUE) 
funs <- Filter(is.function, objs)
funs <- funs[1:3]

ArgLength <- function(functions){
  out <- vector(mode = "list", length = length(functions))
  for (i in seq_along(functions)) {
    name <- names(functions)[i]
    names(out)[[i]] <- name
    out[[i]] <- c(length(formals(args(functions[[name]]))),  is.primitive(functions[[name]]))
  }
  out 
}

ArgLength(funs)

我也尝试使用。

names(out)[[i]] <- name
        out[[i]][1] <- length(formals(args(functions[[name]])))
        out[[i]][2] <- is.primitive(functions[[name]]))

在这两种情况下,我最终都会为列表中的每个条目得到一个项目。

我最终得到了这个。

$`-`
[1] 2 1

$`-.Date`
[1] 2 0

$`-.POSIXt`
[1] 2 0

我想得到这个。

$`-`
[1] 2 
[2] 1

$`-.Date`
[1] 2 
[2] 0

$`-.POSIXt`
[1] 2 
[2] 0

根据评论,我将循环更新为包含

out[[i]] <- list( length = length(formals(args(functions[[name]]))),  
                 is.prim = is.primitive(functions[[name]]))
names(out)[[i]] <- name

我将其作为输出示例。

$sprintf
$sprintf$length
[1] 2

$sprintf$is.prim
[1] FALSE

这是str(ArgLength(funs))

的输出
List of 3
 $ -       :List of 1
  ..$ : int [1:2] 2 1
 $ -.Date  :List of 1
  ..$ : int [1:2] 2 0
 $ -.POSIXt:List of 1
  ..$ : int [1:2] 2 0

0 个答案:

没有答案