如果我有一个函数发生器,即
prepend_text = function(text) {
function(x) {
paste(text, x)
}
}
是否可以使用vapply返回结果函数的向量?我不知道如何指定closure
的返回类型为vapply。
vapply(c('one', 'two', 'three'), FUN.VALUE=???, prepend_text)
使用任何其他值character(1)
等。产量
# Error in vapply(c('one', 'two', 'three'), :
# values must be type 'character',
# but FUN(X[[1]]) result is type 'closure'
我认为这可能是不可能的,并且使用sapply
实际上会返回我想要的内容,所以这个问题主要是学术性的。
我正在寻找的输出也包含每个函数的名称,因此简单的lapply
调用也不起作用。
预期输出相当于
c(one=prepend_text('one'), two=prepend_text('two'), three=prepend_text('three'))
答案 0 :(得分:2)
vapply
不会返回功能,但lapply
会。如果要添加名称,可以在输入对象上设置它们:
x <- c('one', 'two', 'three')
names(x) <- x
lapply(x, prepend_text)
答案 1 :(得分:1)
我建议在这些情况下使用lapply。
你能试试吗?
lapply(list('one', 'two', 'three'), prepend_text)
祝你好运!