R语言如何遍历列表中data.frame运行自定义函数并自动标注绘图
R语言列表两两组合批量调用函数+自动加图标签解决方案
核心实现用到R内置的combn()函数,可直接生成所有不重复的两两组合,无需手动循环或重复写调用语句。自动加标签只需提前给列表元素命名,调用函数时传入对应名称即可。
完整可运行代码
df1<-iris df2<-iris df2$Petal.Width = df2$Petal.Width+2 df3<-iris df3$Petal.Width = df3$Petal.Width-2 df4<-iris df4$Petal.Width = df4$Petal.Width-5 Werte <- list(df1,df2,df3,df4) # 给列表元素命名,用于后续自动生成标签 names(Werte) <- paste0("df", 1:4) # 改造自定义函数,新增名称参数用于自动生成标签 new_function <- function(V1, V2, name1, name2){ m2<-data.frame(V1$Petal.Width, V2$Petal.Width) # 绘图时自动填充对应数据集标签 plot(m2, xlab = paste0(name1, " Petal.Width"), ylab = paste0(name2, " Petal.Width"), main = paste0(name1, " & ", name2, " 散点对比图")) # 后续可直接在此处添加SVM相关逻辑,所有组合都会自动执行 } # 批量生成所有两两组合并调用函数 combn( x = seq_along(Werte), # 取列表所有元素的索引 m = 2, # 两两组合 FUN = function(idx) { new_function( V1 = Werte[[idx[1]]], V2 = Werte[[idx[2]]], name1 = names(Werte)[idx[1]], name2 = names(Werte)[idx[2]] ) } )
关键逻辑说明
combn()是R内置的组合生成函数,会自动遍历所有不重复的两两配对,避免手动复制粘贴调用语句,后续如果新增数据集到Werte列表,不用修改其他代码也会自动纳入组合- 提前给列表设置命名,调用函数时传入对应名称,即可自动生成和数据集匹配的绘图标签,无需手动修改
内容的提问来源于stack exchange,提问作者meica_wuerstchen
相关产品推荐
相关产品推荐

