# something like this?
library(tidyverse)
library(lobstr)
existing_data_list <- list(
data.frame(x = 1:5, y = 0),
data.frame(z = 5:1),
data.frame(y = 1:5, a = 2)
)
existing_data_list
#> [[1]]
#> x y
#> 1 1 0
#> 2 2 0
#> 3 3 0
#> 4 4 0
#> 5 5 0
#>
#> [[2]]
#> z
#> 1 5
#> 2 4
#> 3 3
#> 4 2
#> 5 1
#>
#> [[3]]
#> y a
#> 1 1 2
#> 2 2 2
#> 3 3 2
#> 4 4 2
#> 5 5 2
new_names <- map(
.x = existing_data_list,
.f = \(x) setdiff(c("x", "y", "z", "a"), names(x))
)
new_names
#> [[1]]
#> [1] "z" "a"
#>
#> [[2]]
#> [1] "x" "y" "a"
#>
#> [[3]]
#> [1] "x" "z"
# this is what I want to do
existing_data_list[[1]][ new_names[[1]] ] <- NA
existing_data_list[[2]][new_names[[2]]] <- NA
existing_data_list[[3]][new_names[[3]]] <- NA
existing_data_list
#> [[1]]
#> x y z a
#> 1 1 0 NA NA
#> 2 2 0 NA NA
#> 3 3 0 NA NA
#> 4 4 0 NA NA
#> 5 5 0 NA NA
#>
#> [[2]]
#> z x y a
#> 1 5 NA NA NA
#> 2 4 NA NA NA
#> 3 3 NA NA NA
#> 4 2 NA NA NA
#> 5 1 NA NA NA
#>
#> [[3]]
#> y a x z
#> 1 1 2 NA NA
#> 2 2 2 NA NA
#> 3 3 2 NA NA
#> 4 4 2 NA NA
#> 5 5 2 NA NA
# understanding how this works
ast(existing_data_list[[1]][new_names[[1]]] <- NA)
#> █─`<-`
#> ├─█─`[`
#> │ ├─█─`[[`
#> │ │ ├─existing_data_list
#> │ │ └─1
#> │ └─█─`[[`
#> │ ├─new_names
#> │ └─1
#> └─NA
ast(`<-`(`[`(existing_data_list[[1]],new_names[[1]], value = NA)))
#> █─`<-`
#> └─█─`[`
#> ├─█─`[[`
#> │ ├─existing_data_list
#> │ └─1
#> ├─█─`[[`
#> │ ├─new_names
#> │ └─1
#> └─value = NA
ast(`[<-`(existing_data_list[[1]],new_names[[1]], value = NA))
#> █─`[<-`
#> ├─█─`[[`
#> │ ├─existing_data_list
#> │ └─1
#> ├─█─`[[`
#> │ ├─new_names
#> │ └─1
#> └─value = NA
existing_data_list
#> [[1]]
#> x y z a
#> 1 1 0 NA NA
#> 2 2 0 NA NA
#> 3 3 0 NA NA
#> 4 4 0 NA NA
#> 5 5 0 NA NA
#>
#> [[2]]
#> z x y a
#> 1 5 NA NA NA
#> 2 4 NA NA NA
#> 3 3 NA NA NA
#> 4 2 NA NA NA
#> 5 1 NA NA NA
#>
#> [[3]]
#> y a x z
#> 1 1 2 NA NA
#> 2 2 2 NA NA
#> 3 3 2 NA NA
#> 4 4 2 NA NA
#> 5 5 2 NA NA
# When trying to do this inside of map, this doesn't work?
give_new_names <- map2(
.x = existing_data_list,
.y = new_names,
.f = function(data, new_names){
`<-`(`[`(data, new_names), value = NA)
data
}
)
give_new_names
#> [[1]]
#> x y z a
#> 1 1 0 NA NA
#> 2 2 0 NA NA
#> 3 3 0 NA NA
#> 4 4 0 NA NA
#> 5 5 0 NA NA
#>
#> [[2]]
#> z x y a
#> 1 5 NA NA NA
#> 2 4 NA NA NA
#> 3 3 NA NA NA
#> 4 2 NA NA NA
#> 5 1 NA NA NA
#>
#> [[3]]
#> y a x z
#> 1 1 2 NA NA
#> 2 2 2 NA NA
#> 3 3 2 NA NA
#> 4 4 2 NA NA
#> 5 5 2 NA NA
add_new_columns <- function(data, cols, values){
`<-`(`[`(data, cols), value = values)
data
}
give_new_names <- map2(
.x = existing_data_list,
.y = new_names,
.f = function(data, new_names){
add_new_columns(data, new_names, NA)
}
)
# yewwwww
give_new_names
#> [[1]]
#> x y z a
#> 1 1 0 NA NA
#> 2 2 0 NA NA
#> 3 3 0 NA NA
#> 4 4 0 NA NA
#> 5 5 0 NA NA
#>
#> [[2]]
#> z x y a
#> 1 5 NA NA NA
#> 2 4 NA NA NA
#> 3 3 NA NA NA
#> 4 2 NA NA NA
#> 5 1 NA NA NA
#>
#> [[3]]
#> y a x z
#> 1 1 2 NA NA
#> 2 2 2 NA NA
#> 3 3 2 NA NA
#> 4 4 2 NA NA
#> 5 5 2 NA NA
Created on 2024-04-08 with reprex v2.1.0
Session info
sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#> setting value
#> version R version 4.3.3 (2024-02-29)
#> os macOS Sonoma 14.3.1
#> system aarch64, darwin20
#> ui X11
#> language (EN)
#> collate en_US.UTF-8
#> ctype en_US.UTF-8
#> tz Australia/Hobart
#> date 2024-04-08
#> pandoc 3.1.1 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/ (via rmarkdown)
#>
#> ─ Packages ───────────────────────────────────────────────────────────────────
#> package * version date (UTC) lib source
#> cli 3.6.2 2023-12-11 [1] CRAN (R 4.3.1)
#> colorspace 2.1-0 2023-01-23 [1] CRAN (R 4.3.0)
#> crayon 1.5.2 2022-09-29 [1] CRAN (R 4.3.0)
#> digest 0.6.34 2024-01-11 [1] CRAN (R 4.3.1)
#> dplyr * 1.1.4 2023-11-17 [1] CRAN (R 4.3.1)
#> evaluate 0.23 2023-11-01 [1] CRAN (R 4.3.1)
#> fansi 1.0.6 2023-12-08 [1] CRAN (R 4.3.1)
#> fastmap 1.1.1 2023-02-24 [1] CRAN (R 4.3.0)
#> forcats * 1.0.0 2023-01-29 [1] CRAN (R 4.3.0)
#> fs 1.6.3 2023-07-20 [1] CRAN (R 4.3.0)
#> generics 0.1.3 2022-07-05 [1] CRAN (R 4.3.0)
#> ggplot2 * 3.5.0 2024-02-23 [1] CRAN (R 4.3.1)
#> glue 1.7.0 2024-01-09 [1] CRAN (R 4.3.1)
#> gtable 0.3.4 2023-08-21 [1] CRAN (R 4.3.0)
#> hms 1.1.3 2023-03-21 [1] CRAN (R 4.3.0)
#> htmltools 0.5.7 2023-11-03 [1] CRAN (R 4.3.1)
#> knitr 1.45 2023-10-30 [1] CRAN (R 4.3.1)
#> lifecycle 1.0.4 2023-11-07 [1] CRAN (R 4.3.1)
#> lobstr * 1.1.2 2022-06-22 [2] CRAN (R 4.3.0)
#> lubridate * 1.9.3 2023-09-27 [1] CRAN (R 4.3.1)
#> magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.3.0)
#> munsell 0.5.0 2018-06-12 [1] CRAN (R 4.3.0)
#> pillar 1.9.0 2023-03-22 [1] CRAN (R 4.3.0)
#> pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.3.0)
#> purrr * 1.0.2 2023-08-10 [1] CRAN (R 4.3.0)
#> R.cache 0.16.0 2022-07-21 [2] CRAN (R 4.3.0)
#> R.methodsS3 1.8.2 2022-06-13 [2] CRAN (R 4.3.0)
#> R.oo 1.26.0 2024-01-24 [2] CRAN (R 4.3.1)
#> R.utils 2.12.3 2023-11-18 [2] CRAN (R 4.3.1)
#> R6 2.5.1 2021-08-19 [1] CRAN (R 4.3.0)
#> readr * 2.1.5 2024-01-10 [1] CRAN (R 4.3.1)
#> reprex 2.1.0 2024-01-11 [2] CRAN (R 4.3.1)
#> rlang 1.1.3 2024-01-10 [1] CRAN (R 4.3.1)
#> rmarkdown 2.25 2023-09-18 [1] CRAN (R 4.3.1)
#> rstudioapi 0.15.0 2023-07-07 [1] CRAN (R 4.3.0)
#> scales 1.3.0 2023-11-28 [1] CRAN (R 4.3.1)
#> sessioninfo 1.2.2 2021-12-06 [2] CRAN (R 4.3.0)
#> stringi 1.8.3 2023-12-11 [1] CRAN (R 4.3.1)
#> stringr * 1.5.1 2023-11-14 [1] CRAN (R 4.3.1)
#> styler 1.10.2 2023-08-29 [2] CRAN (R 4.3.0)
#> tibble * 3.2.1 2023-03-20 [1] CRAN (R 4.3.0)
#> tidyr * 1.3.1 2024-01-24 [1] CRAN (R 4.3.1)
#> tidyselect 1.2.0 2022-10-10 [1] CRAN (R 4.3.0)
#> tidyverse * 2.0.0 2023-02-22 [2] CRAN (R 4.3.0)
#> timechange 0.3.0 2024-01-18 [1] CRAN (R 4.3.1)
#> tzdb 0.4.0 2023-05-12 [1] CRAN (R 4.3.0)
#> utf8 1.2.4 2023-10-22 [1] CRAN (R 4.3.1)
#> vctrs 0.6.5 2023-12-01 [1] CRAN (R 4.3.1)
#> withr 3.0.0 2024-01-16 [1] CRAN (R 4.3.1)
#> xfun 0.42 2024-02-08 [1] CRAN (R 4.3.1)
#> yaml 2.3.8 2023-12-11 [1] CRAN (R 4.3.1)
#>
#> [1] /Users/nick/Library/R/arm64/4.3/library
#> [2] /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library
#>
#> ──────────────────────────────────────────────────────────────────────────────