サンプルデータセットは次のとおりです。
dat1 <- structure(list(id = 1:3, des.1 = 4:6, x = 7:9, not = 10:12), class = "data.frame", row.names = c(NA,-3L))
dat2 <- structure(list(id = 1:3, descript = 4:6, y = 7:9, yes = 10:12), class = "data.frame", row.names = c(NA,-3L))
dat3 <- structure(list(id = 1:3, description = 4:6, x = 7:9, X4 = 10:12), class = "data.frame", row.names = c(NA,-3L))
dat_list <- list(dat1, dat2, dat3)
たとえば、このデータフレームのリスト全体でxおよびX4という名前のすべての列を削除したい場合は、次のように実行できます。これらの列を含む各データフレームにアクセスし、次のように削除します。
dat_list[[1]] <- dat_list[[1]] %>% select(-x)
dat_list[[3]] <- dat_list[[3]] %>% select(-c("x", "X4"))
ただし、リスト全体でこれを行う方法があるかどうか疑問に思っています。これらの列の一部は、リスト内の各データフレームに存在しないことに注意してください。
このリスト内のすべてのデータフレームでc( "x"、 "X4")という名前のすべての列を削除できる方法を誰かが考えられますか?
1つのアプローチは次のとおりです。
library(tidyverse)
map(dat_list, function(xx) xx %>% select(any_of(c("x", "X4"))))
# [[1]]
# x
# 1 7
# 2 8
# 3 9
# [[2]]
# data frame with 0 columns and 3 rows
# [[3]]
# x X4
# 1 7 10
# 2 8 11
# 3 9 12
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加