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