R 如何将元素作为额外项附加到列表中?

R 如何将元素作为额外项附加到列表中?,r,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)

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

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)
我想要这个

$`-`
[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
这是
str(ArgLength(funs))的输出


for
循环的最后语句中,可能将
c
替换为
list
。我可能会把第二行和第三行也颠倒过来。我仍然在寻找[1]项和[2]项。我真的很困惑你想做什么。你能为你想做的具体事情做一个可复制的例子吗?你只是想从
list(a=1,b=2,c=3)
转到
list(a=c(1,2),b=c(2,3),c=c(3,5))
?我添加了
funs[1:3]
这一行,使它可以复制。我想把它作为我的输入,并创建一个列表,其中每个组件的名称是函数名,第一项是参数的数量,第二项是判断它是否为基元函数的TRUE/FALSE。我在
下包含了预期的输出,我想得到这个
,我想我仍然对两者之间的区别感到困惑。对于列表中的每一项,您都会得到相同的值。当你想要一个命名列表时,问题是它们是一个向量吗?你能显示你得到的输出的
str
吗?在
for
循环的最后语句中,可能用
list
替换
c
。我可能会把第二行和第三行也颠倒过来。我仍然在寻找[1]项和[2]项。我真的很困惑你想做什么。你能为你想做的具体事情做一个可复制的例子吗?你只是想从
list(a=1,b=2,c=3)
转到
list(a=c(1,2),b=c(2,3),c=c(3,5))
?我添加了
funs[1:3]
这一行,使它可以复制。我想把它作为我的输入,并创建一个列表,其中每个组件的名称是函数名,第一项是参数的数量,第二项是判断它是否为基元函数的TRUE/FALSE。我在
下包含了预期的输出,我想得到这个
,我想我仍然对两者之间的区别感到困惑。对于列表中的每一项,您都会得到相同的值。当你想要一个命名列表时,问题是它们是一个向量吗?你能显示你得到的输出的
str
$`-`
[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
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