代码之家  ›  专栏  ›  技术社区  ›  Lenny

R连接一列数据帧,生成一个向量,然后在for循环中使用它

  •  0
  • Lenny  · 技术社区  · 7 年前

    我有一个如下所示的数据框:

    Tote_Type Length Width Height
    L1        36     24     24
    L2        33     20     20
    M1        30     18     18
    M2        27     16     16
    S1        24     14     14
    S2        20     10     10
    

    我想制作一个高度自动化的程序。此数据框是一个输入数据。我将从excel文件中读取此数据框。然后我将循环通过 tote 像这样的类型

    for (i in c("L1", "L2", "M1", "M2", "S1", "S2")){
        pass
    }
    

    问题是 手提包 类型可能会更改。我想创建一个不需要编辑R代码的工具。所有更改都需要在Excel中完成。

    因此,我的目标是在excel文件中读取如上所示的数据框,然后使用第一列数据或第一列数据的一部分创建类似 c("L1" , "L2" , "M1", "M2", "S1", "S2") ,然后将此向量应用于 for

    我真的不知道如何做到这一点。任何帮助都将不胜感激。非常感谢。

    1 回复  |  直到 7 年前
        1
  •  1
  •   f.lechleitner    7 年前

    这就是你要找的吗?可以使用创建向量 unique() . 让我们先创建数据帧:

    df <- read.table(
      text = "
      Tote_Type Length Width Height
      L1        36     24     24
      L2        33     20     20
      M1        30     18     18
      M2        27     16     16
      S1        24     14     14
      S2        20     10     10
      ",
      header = T,
      stringsAsFactors = F
    )
    

    Unique提供所需的矢量:

    > unique(df$Tote_Type)
    [1] "L1" "L2" "M1" "M2" "S1" "S2"
    

    循环:

    for (i in unique(df$Tote_Type)){
      print(i)
    }
    

    输出:

    [1] "L1"
    [1] "L2"
    [1] "M1"
    [1] "M2"
    [1] "S1"
    [1] "S2"