r语言 - 如何在函数上使用"for loop",而一个参数引用工作区对象



很难为我的问题找到一个有意义的标题。我想更详细地描述一下比较好。

我想创建一个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)

最新更新