代码之家  ›  专栏  ›  技术社区  ›  Chris T.

循环浏览数据帧列表并为每个图命名标题

  •  1
  • Chris T.  · 技术社区  · 5 年前

    我指的是这个 example code 生成一个包含多个子块的绘图,子块有自己的标题,但无法通过循环正确标记子块的标题。 为了便于说明,我使用1×2绘图环境作为示例。

    par(mfrow(1, 2))
    require(fmsb)
    
    data1=as.data.frame(matrix( sample(2:20, 10, replace=T) , ncol=10))
    data2=as.data.frame(matrix( sample(2:20, 10, replace=T) , ncol=10))
    colnames(data1)=c("math" , "english" , "biology" , "music" , "R-coding", "data-viz" , "french" , "physic", "statistic", "sport" )
    colnames(data2)=c("math" , "english" , "biology" , "music" , "R-coding", "data-viz" , "french" , "physic", "statistic", "sport" )
    
    df1=rbind(rep(20,10) , rep(0,10) , data1)
    df2=rbind(rep(20,10) , rep(0,10) , data2)
    
    my.list <- list(df1, df2)
    
    for (i in my.list[[i]]) {
    
    radarchart(i, axistype=1 , 
    
        #custom polygon
        pcol=rgb(0.2,0.5,0.5,0.9) , pfcol=rgb(0.2,0.5,0.5,0.5) , plwd=4 , 
    
        #custom the grid
        cglcol="grey", cglty=1, axislabcol="grey", caxislabels=seq(0,20,5), cglwd=0.8,
    
        #custom labels
        vlcex=0.8 
        )
    }
    

    但是,这个代码块没有返回任何东西,因为它要求输入是一个数据帧。另外,如果我想 title 中的参数 radarchart() 通过为每个数据帧分配一个唯一的名称(例如,student 1,student 2)并将它们用作每个子块的标题,我如何在循环中实现这一点?

    1 回复  |  直到 5 年前
        1
  •  2
  •   Dij    5 年前

    您的代码有一些错误,这里是我假定的预期输出:

    par(mfrow=c(1,2))调试
    
    图书馆(FMSB)
    
    data1=as.data.frame(矩阵(示例(2:20,10,replace=t),ncol=10))
    data2=as.data.frame(矩阵(示例(2:20,10,replace=t),ncol=10))
    colnames(data1)=c(“数学”、“英语”、“生物学”、“音乐”、“R-编码”、“数据VIZ”、“法语”、“物理”、“统计”、“体育”)。
    colnames(data2)=c(“数学”、“英语”、“生物学”、“音乐”、“R-编码”、“数据viz”、“法语”、“物理”、“统计”、“体育”)。
    
    DF1=Rbind(rep(20,10),rep(0,10),数据1)
    df2=Rbind(rep(20,10),rep(0,10),数据2)
    
    my.list<-list(“df1”=df1,“df2”=df2)命名列表的元素
    
    for(i in 1:length(my.list))使用i作为列表索引器,而不是调用元素
    
    radarchart(my.list[[i]],axistype=1,调用列表的元素
    
    #自定义多边形
    pcol=rgb(0.2,0.5,0.5,0.9),pfcol=rgb(0.2,0.5,0.5,0.5),plwd=4,
    
    #自定义网格
    cglcol=“灰色”,cglty=1,axislabcol=“灰色”,caxisLabels=seq(0,20,5),cglwd=0.8,
    
    #自定义标签
    vlcex=0.8,
    
    #标题;调用列表的名称
    标题=姓名(my.list)[i]
    )
    }
    
    
    

    enter image description here