我有一个关于 R 函数式编程的基本问题。
给定一个返回列表的函数,例如:
myF <- function(x){
return (list(a=11,b=x))
}
为什么在使用范围或向量调用函数时返回的列表对于“a”总是相同的长度 例如:
myF(1:10)
返回:
$a
[1] 11
$b
[1] 1 2 3 4 5 6 7 8 9 10
如何改变行为以使“a”列表的样本长度为 b。
我实际上正在使用一堆 S4 对象,这些对象我无法轻松转换为列表(使用 as.list),因此 _apply 不是我的首选。
感谢您的任何见解或帮助!
编辑(添加了进一步的解释)我不一定只想填充“a”以使其长度等于 b。但是,使用解决方案 as.list(data.frame(a=myA,b=x)) 用首先计算的相同值填充“a”。
myF <- function(x){
myA = ceiling(runif(1, max=100))
return (as.list(data.frame(a=myA
,b=x)))
}
myF(1:5)
$a
[1] 79 79 79 79 79 79 79 79 79 79
$b
[1] 1 2 3 4 5 6 7 8 9 10
我仍然不确定为什么会这样!
谢谢