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