R中的许多函数将vector作为参数,为参数向量的每个元素计算函数,然后返回包含结果的向量。例如,如果我创建以下函数
myFunction <- function(x) {
x <- (x+1)/2
print(x)
}
然后评估myFunction(1:5)
,我得到一个向量结果:1.0 1.5 2.0 2.5 3.0.
不需要循环。
然而,前几天,我使用dir.create()
函数来制作一堆目录。 dir.create()
函数将您要创建的文件夹的路径作为参数。由于我想创建许多文件夹,我尝试使用一个字符向量,每个元素都是我想要创建的文件夹的路径:
dir.create(c("folder 1 path", "folder 2 path", "folder 3 path"))
在执行此操作时,我收到一条错误消息,指出“无效的'路径'参数。”果然,如果查看dir.create()
的文档,它指定path参数必须是“包含单个路径名的字符向量”。
使dir.create()
接受路径名向量的唯一方法似乎是编写循环或应用函数:
sapply(c("folder 1 path", "folder 2 path", "folder 3 path"), dir.create)
虽然我不记得具体的例子,但我想我已经遇到过这样的其他功能。似乎不一致的是,某些函数会自动循环输入的向量,而其他函数的行为类似于dir.create()
函数。编写循环很容易,但我真的很想理解为什么我希望某些函数在向量的长度上运行,但它们却没有。
有没有办法提前告诉函数是否乐意将向量作为输入,或者它是否只接受单个值?