问题描述
我想将文件名分布在两个不同的向量中。如果存在,则应转到existing_files,否则,应转到missing_files。
existing_files <- ""
missing_files <- ""
f1 <- function(file_name){
if (any(file_name == vector_of_file_names)) {
existing_files <- append(existing_files,file_name)
} else {
missing_files <- append(missing_files,file_name)
}
}
f1("file1")
执行“ file1”不起作用,我没有收到任何警告或错误。这是为什么?如果我在函数中删除“ existing_files
有关我要在此处解决的问题的更多信息:
我正在扫描我正在使用的文件夹中的文件名,该文件名已存储在“ vector_of_file_names”中。我只是想知道,是否我需要的所有文件都在该文件夹中。我用list.files做到这一点,这给了我所有文件。然后,我将这些文件与“ vector_of_file_names”进行比较。结果就是我的问题。我想要两个向量来根据文件在该文件夹中的存在列出文件(我想要在该文件夹中)。
解决方法
existing_files
和missing_files
在全局范围内。没有超级分配<<-
existing_files <- ""
missing_files <- ""
f1 <- function(file_name){
if (any(file_name == existing_files)) {
existing_files <<- append(existing_files,file_name)
} else {
missing _files <<- append(missing_files,file_name)
}
}
f1("file1")
,
您能否提供更多有关要解决的问题的背景信息?我在您的代码中看不到任何实际测试文件“存在”的东西,只有向量existing_files
的状态。
让功能一次作用于单个对象然后根据结果潜在地修改多个外部对象之一的状态是不寻常的设计选择。是的,您可以使用超方法之外的方法(在其他作用域中的对象被修改为函数的副作用)“解决”您的问题,但是您的代码将很快变得难以推理。