【发布时间】:2020-11-06 03:19:00
【问题描述】:
我有 9 个数据框,我想从它们中提取相同的列,所以其中一个看起来像这样:
> str(ess2002)
tibble [39,334 × 566] (S3: tbl_df/tbl/data.frame)
$ name : chr [1:39334] "ESS1e06_6" "ESS1e06_6" "ESS1e06_6" "ESS1e06_6" ...
..- attr(*, "label")= chr "Title of dataset"
..- attr(*, "format.stata")= chr "%9s"
$ essround: num [1:39334] 1 1 1 1 1 1 1 1 1 1 ...
..- attr(*, "label")= chr "ESS round"
..- attr(*, "format.stata")= chr "%12.0g"
$ edition : chr [1:39334] "6.6" "6.6" "6.6" "6.6" ...
..- attr(*, "label")= chr "Edition"
..- attr(*, "format.stata")= chr "%3s"
$ proddate: chr [1:39334] "01.12.2018" "01.12.2018" "01.12.2018" "01.12.2018" ...
..- attr(*, "label")= chr "Production date"
..- attr(*, "format.stata")= chr "%10s"
$ cntry : chr [1:39334] "AT" "AT" "AT" "AT" ...
..- attr(*, "label")= chr "Country"
..- attr(*, "format.stata")= chr "%2s"
$ idno : num [1:39334] 1 2 3 4 6 7 8 10 12 14 ...
..- attr(*, "label")= chr "Respondent's identification number"
..- attr(*, "format.stata")= chr "%12.0g"
我想选择以“prtvt”开头的变量,包含“IM”、“QFIM”或“RFG”的变量。并为九个数据帧中的每一个做到这一点。 我尝试创建一个包含所有数据框的列表并使用 select 函数运行 lapply,如下所示:
df.list <- list(ess2002,ess2004,ess2006,ess2008,
ess2010,ess2012,ess2014,ess2016, ess2018)
lapply(df.list, select(starts_with("prtvt") | contain(c("IM", "QFIM", "RFG"))))
但我收到以下错误:
Error: `starts_with()` must be used within a *selecting* function.
有人知道如何解决这个问题吗?
非常感谢!
【问题讨论】:
标签: r loops dplyr tidyverse lapply