【发布时间】:2020-04-03 23:28:09
【问题描述】:
我有 20 个数据帧,我想将其中的 4 个变量子集化到一个新的数据帧中。
DF1 <- subset(Circle1.csv, select = c(col1, col2, col3, col4))
DF2 <- subset(Circle2.csv, select = c(col1, col2, col3, col4))
我不想写 20 次;有没有办法循环这个?
非常感谢
【问题讨论】:
我有 20 个数据帧,我想将其中的 4 个变量子集化到一个新的数据帧中。
DF1 <- subset(Circle1.csv, select = c(col1, col2, col3, col4))
DF2 <- subset(Circle2.csv, select = c(col1, col2, col3, col4))
我不想写 20 次;有没有办法循环这个?
非常感谢
【问题讨论】:
使用for 循环
nrows <- 1:4 # number of rows to subset
colNames <- c('col1', 'col2', 'col3', 'col4') # column names
# assign subset of dataframe
for (i in 1:20) {
assign(x = paste0('DF', i), value = get(paste0('Circle', i, '.csv'))[nrows, colNames])
}
【讨论】:
通过循环 list 将所有对象放入 list 和 subset 一次
lst1 <- lapply(mget(sprintf("Circle%d.csv", 1:20)), subset,
select = c(col1, col2, col3, col4))
或者dplyr/purrr
library(purrr)
library(dplyr)
lst1 <- map(mget(sprintf("Circle%d.csv", 1:20)), ~ .x %>%
select(col1:col4))
【讨论】: