我有一个包含5个元素的字符向量,我想为每个元素调用一个函数foo
。这是一个例子-
foo <- function(printMe)
{
print(printMe)
}
vec <- c("Hello", "How are you?", "Take Care", "Welcome", "Goodbye")
对于向量的每个元素,调用函数foo
的最佳方式应该是什么?
如果函数是矢量化的(如本例所示(,则可以直接在函数中传递矢量。
foo(vec)
如果您的函数不是矢量化的,这意味着它在给定的时间只能处理一个输入,那么您可以使用任何可用的循环方法。
#1. for loop
for(i in vec) {
foo(i)
}
#2. sapply/lapply
sapply(vec, foo)
lapply(vec, foo)
#3. purrr::map
purrr::map(vec, foo)
R中有一个函数Vectorize()
可以做到这一点,所以您可以只做:
Vectorize(foo)(vec)