私はlist
11のデータフレームの各データフレームの名前は、そのソースを記載しています。基本的に、各セルのデータフレームの名前を含むリストの各データフレームに「ソース」列を追加したいと思います。
これがすべてなので、データはリストでうまく機能しないCRANパッケージにダウンストリームで渡される可能性があります。
私はlapply
他のいくつかのSOの答えを使って調べてみましたが、何も合わないようです。
どんな助けでも大歓迎です、
## Some toy data
p1 <- c("A", "B", "C", "D", "E")
p2 <- c(rnorm(5, 1.25, 1))
p3 <- c(rnorm(5, 1.25, 1))
source_name_1 <- data.frame(p1, p2, p3)
p2 <- c(rnorm(5, 1.25, 1))
p3 <- c(rnorm(5, 1.25, 1))
source_name_2 <- data.frame(p1, p2, p3)
p2 <- c(rnorm(5, 1.25, 1))
p3 <- c(rnorm(5, 1.25, 1))
source_name_3 <- data.frame(p1, p2, p3)
df_list <- list(source_name_1,
source_name_2,
source_name_3)
names(df_list) = paste0("source_name_", 1:length(df_list))
## Previous attempt based on other SO answers
df_list_2 <- lapply(names(df_list),
function(x) cbind(df_list),
source = names(df_list),
SIMPLIFY = TRUE)
#essentially I'm aiming for a 'p4' column in each df comprised of `^source_name[1-9]`
コメントで@monteが指摘しているように、リスト要素に名前を付ける必要があります。彼らはすべて「source_name_」とのパターンに従うと仮定すると、あなたが使用してこれを行うことができますdplyr
し、purrr
あなたのおもちゃのデータを使用して
df_list <- list(source_name_1,
source_name_2,
source_name_3)
names(df_list) = paste0("source_name_", 1:length(df_list))
library(dplyr)
library(purrr)
purrr::map2(df_list, names(df_list), ~ mutate(.x, p4 = .y))
#> $source_name_1
#> p1 p2 p3 p4
#> 1 A 0.1531752 1.5198717 source_name_1
#> 2 B 0.8299500 1.4534902 source_name_1
#> 3 C 2.1038329 0.3968661 source_name_1
#> 4 D 2.3939380 1.0487960 source_name_1
#> 5 E 1.5773872 1.8611408 source_name_1
#>
#> $source_name_2
#> p1 p2 p3 p4
#> 1 A 0.8662918 -1.014854 source_name_2
#> 2 B -1.8042179 1.339152 source_name_2
#> 3 C 1.4786439 -1.940525 source_name_2
#> 4 D 1.8360023 1.439776 source_name_2
#> 5 E 0.9648816 2.051714 source_name_2
#>
#> $source_name_3
#> p1 p2 p3 p4
#> 1 A 1.268633 1.7334884 source_name_3
#> 2 B 1.615704 1.0503553 source_name_3
#> 3 C 2.056368 1.4954794 source_name_3
#> 4 D 2.335987 1.6293595 source_name_3
#> 5 E 1.236283 0.4498371 source_name_3
おもちゃのデータ
## Some toy data
p1 <- c("A", "B", "C", "D", "E")
p2 <- c(rnorm(5, 1.25, 1))
p3 <- c(rnorm(5, 1.25, 1))
source_name_1 <- data.frame(p1, p2, p3)
p2 <- c(rnorm(5, 1.25, 1))
p3 <- c(rnorm(5, 1.25, 1))
source_name_2 <- data.frame(p1, p2, p3)
p2 <- c(rnorm(5, 1.25, 1))
p3 <- c(rnorm(5, 1.25, 1))
source_name_3 <- data.frame(p1, p2, p3)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加