在向量上迭代并调用R中的函数

  • 本文关键字:函数 调用 向量 迭代 r
  • 更新时间 :
  • 英文 :


我有一个包含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)

最新更新