很难为我的问题找到一个有意义的标题。我想更详细地描述一下比较好。
我想创建一个for循环,它返回一个包含由函数创建的对象的列表。for循环可以访问一个路径,其中有很多文件(在我的代码中是E2)。此外,循环应该使用已经在我的工作空间中的对象(在我的代码中为E)。对于路径中的每个文件和我工作区中的对象,函数应该做它应该做的事情。问题是,函数似乎不接受E中的值(名称)作为函数第二个参数的对象。到目前为止,这一点很清楚,但我如何在循环中实现这一点?这是我的代码,我想你会立即看到问题:
for (id in 1:3){
num = id
E=as.symbol(paste("Sorb", num, sep = ''))
E2=paste('mypath/file_', paste(num, 'txt', sep = "."), sep="")
x=myfunction(arg1 = E2, arg2 = E)
data=c(data,x)}
希望我的问题可以理解。到目前为止,我读到的使用lapply可能是一个解决方案?
提前感谢你对我的帮助。
最佳,Tobi
尝试get函数。例如:
E=get(paste("Sorb", num, sep = ''))
看起来myfunction()
适用于一个文件名值和一个符号。为要访问的所有文件创建矢量,并创建相应符号名称的矢量。
num <- 1:3
filenames <- sprintf("mypath/file_%d.txt", num)
symnames <- paste0("Sorb", num)
使用Map()
(或mapply()
)将此函数应用于每个文件名和符号(如果只有一个参数不同,则使用lapply()
)。
num <- 1:3
Map(function(filename, symname) {
myfunction(filename, get(symname))
}, filenames, symnames)