假设我有一个这样的 R 列表:
> summary(data.list)
Length Class Mode
aug9104AP 18 data.frame list
Aug17-10_acon_7pt_dil_series_01 18 data.frame list
Aug17-10_Picro_7pt_dil_series_01 18 data.frame list
Aug17-10_PTZ_7pt_dil_series_01 18 data.frame list
Aug17-10_Verat_7pt_dil_series_01 18 data.frame list
我想使用
l_ply
处理列表中的每个 data.frame ,但我还需要将名称(例如 aug9104AP)与 data.frame 一起传递到处理函数中。类似的东西:l_ply(data.list,function(df,...) {
cli.name<- arg_to_access_current_list_item_name
#make plots with df, use cli.name in plot titles
#save results in a file called cli.name
}, arg_to_access_current_list_item_name
)
应该怎么做
arg_to_access_current_list_item_name
是?
最佳答案
如果您一一传递它们,您可以使用 deparse(substitute(arg)) ,例如:
test <- function(x){
y <- deparse(substitute(x))
print(y)
print(x)
}
var <- c("one","two","three")
test(var)
[1] "var"
[1] "one" "two" "three"
对于 l_ply,您必须求助于将属性添加到列表本身,例如:
for(i in 1:length(data.list)){
attr(data.list[[i]],"name") <- names(data.list)[i]
}
然后你可以使用 attr :
cli <- attr(x,"name")
干杯
关于list - l_ply : how to pass the list's name attribute into the function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3548263/