此问题在此处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)技巧”或其他方法来获取对象名称?
答案 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
,但是您说的我们不知道它来自何处以及如何填充这些数据。