传递给函数后获取对象名,并在R中用于for循环

时间:2016-05-26 19:26:11

标签: r rpostgresql

此问题在此处In R, how to get an object's name after it is sent to a function?

但是,在for循环中,这不起作用。例如,以下方法将多个数据帧写入postgresql数据库,

write_multiple_to_postgres <- function(list_of_frames) {
for(i in 1:length(list_of_frames)) {
    object_name <- deparse(substitute(list_of_frames[[i]]))
    write_to_postgresql(object_name, list_of_frames[[i]])
    }
}

list_of_frames如下所示:

my_list <- list(data_frame_susan, data_frame_bobby, data_frame_melissa)

....并被称为:

write_multiple_to_postgres(my_list)

我希望将object_name作为字符串传递给write_to_postgresql方法。但我得到了object_name

的以下输出

my_list [[1L]] my_list [[2L]] my_list [[3L]]

我想要的是:

data_frame_susan, data_frame_bobby, data_frame_melissa

如何在传递给函数并在for循环中使用后,使用“deparse(substitute)技巧”或其他方法来获取对象名称?

1 个答案:

答案 0 :(得分:0)

在定义列表my_list时,无法返回df名称。您应该使用my_list=list(data_frame_susan=data_frame_susan...)等命名列表,然后在names(my_list)

上设置循环
for (df in names(my_list)){
write_to_postgresql(df, my_list[[df]])
}

现在的问题是如何使用相应的名称准备my_list,但是您说的我们不知道它来自何处以及如何填充这些数据。