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

R:如何将相同的变量(rownumber)添加到列表中的每个数据帧?[副本]

  •  1
  • Abdel  · 技术社区  · 7 年前

    以下命令添加一个数字变量,该变量指示数据帧的行号:

    some_data$.id <- as.numeric(rownames(some_data)) 
    

    我有一个包含许多数据帧的列表,我想将上面定义的变量添加到该列表中的每个数据帧。我想我需要像拉普莱那样的东西来做,但我不知道具体怎么做。我该怎么做?

    2 回复  |  直到 7 年前
        1
  •  4
  •   Maurits Evers    7 年前

    你可以用 purrr::map 具有 tibble::rowid_to_column

    library(tidyverse)
    lst <- list(mtcars, iris)
    map(lst, ~rowid_to_column(.x, ".id"))
    #[[1]]
    #   .id  mpg cyl  disp  hp drat    wt  qsec vs am gear carb
    #1    1 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
    #2    2 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
    #3    3 22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
    #4    4 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
    #5    5 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
    #...
    #
    #[[2]]
    #    .id Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
    #1     1          5.1         3.5          1.4         0.2     setosa
    #2     2          4.9         3.0          1.4         0.2     setosa
    #3     3          4.7         3.2          1.3         0.2     setosa
    #4     4          4.6         3.1          1.5         0.2     setosa
    #5     5          5.0         3.6          1.4         0.2     setosa
    #...
    

    对于行名(而不是行号),只需替换 rowid_to_column 具有 rownames_to_column .

        2
  •  1
  •   Stéphane Laurent    7 年前
    mylist <- list(dat1=mtcars, dat2=mtcars)
    
    mynewlist <- lapply(mylist, function(dat){
      dat$.id <- rownames(mtcars)
      dat
    })
    

    > names(mynewlist)
    [1] "dat1" "dat2"
    > head(mynewlist$dat1)
                       mpg cyl disp  hp drat    wt  qsec vs am gear carb               .id
    Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4         Mazda RX4
    Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4     Mazda RX4 Wag
    Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1        Datsun 710
    Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1    Hornet 4 Drive
    Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2 Hornet Sportabout
    Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1           Valiant