0

这个问题在这里问在R中,如何在将对象发送到函数后获取对象的名称?

但是,这在 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 的以下输出

我的列表[[1L]],我的列表[[2L]],我的列表[[3L]]

我想要的是:

data_frame_susan、data_frame_bobby、data_frame_melissa

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

4

1 回答 1

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使用相应的名称进行准备,但您所说的我们不知道它来自哪里以及这些 data.frames 是如何填充的。

于 2016-05-26T20:12:53.723 回答