从列表中的每个数据框中获取列名
Getting a column name from each dataframe in a list
我的数据如下:
library(data.table)
df <- fread(
"A B C D E F iso year
0 A NA 1 NA NA NLD 2009
1 Y NA 2 NA NA NLD 2009
0 Q NA 3 NA NA AUS 2011
1 NA NA 4 NA NA AUS 2011
0 0 NA 7 NA NA NLD 2008
1 1 NA 1 NA NA NLD 2008
0 1 NA 3 NA NA AUS 2012
0 NA 1 NA 1 NA ECU 2009
1 NA 0 NA 2 0 ECU 2009
0 NA 0 NA 3 0 BRA 2011
1 NA 0 NA 4 0 BRA 2011
0 NA 1 NA 7 NA ECU 2008
1 NA 0 NA 1 0 ECU 2008
0 NA 0 NA 3 2 BRA 2012
1 NA 0 NA 4 NA BRA 2012",
header = TRUE
)
# Creates a list of dataframes
df_iso <- split(df, df$iso) # Creates a list of dataframes
我现在想在列表的每个数据集中提取第 8 列的列名。
显然在这种情况下它们都是"year"
,但在我的实际数据中它们是不同的。
如果我这样做 colnames(df_iso[[1]])[8]
我会得到 "year"
,所以我尝试了:
我试过了:
names <- list()
for (i in length(df_iso)) {
names <- as.vector(append(names , colnames(df_iso[[i]])[8]))
}
令人惊讶的是,这不起作用。我想要一个列表或一个向量,对于 df_iso
中的每个 data.frame 都会给我 `"year"``,有人可以帮忙吗?
一种可能是:
lapply(df_iso, function(x) names(x)[8])
$AUS
[1] "year"
$BRA
[1] "year"
$ECU
[1] "year"
$NLD
[1] "year"
使用 sapply 的解决方案:
sapply(df_iso, function(i){
colnames(i)[8]
})
AUS BRA ECU NLD
"year" "year" "year" "year"
选项purrr
library(purrr)
map(df_iso, ~ names(.x)[8])
我的数据如下:
library(data.table)
df <- fread(
"A B C D E F iso year
0 A NA 1 NA NA NLD 2009
1 Y NA 2 NA NA NLD 2009
0 Q NA 3 NA NA AUS 2011
1 NA NA 4 NA NA AUS 2011
0 0 NA 7 NA NA NLD 2008
1 1 NA 1 NA NA NLD 2008
0 1 NA 3 NA NA AUS 2012
0 NA 1 NA 1 NA ECU 2009
1 NA 0 NA 2 0 ECU 2009
0 NA 0 NA 3 0 BRA 2011
1 NA 0 NA 4 0 BRA 2011
0 NA 1 NA 7 NA ECU 2008
1 NA 0 NA 1 0 ECU 2008
0 NA 0 NA 3 2 BRA 2012
1 NA 0 NA 4 NA BRA 2012",
header = TRUE
)
# Creates a list of dataframes
df_iso <- split(df, df$iso) # Creates a list of dataframes
我现在想在列表的每个数据集中提取第 8 列的列名。
显然在这种情况下它们都是"year"
,但在我的实际数据中它们是不同的。
如果我这样做 colnames(df_iso[[1]])[8]
我会得到 "year"
,所以我尝试了:
我试过了:
names <- list()
for (i in length(df_iso)) {
names <- as.vector(append(names , colnames(df_iso[[i]])[8]))
}
令人惊讶的是,这不起作用。我想要一个列表或一个向量,对于 df_iso
中的每个 data.frame 都会给我 `"year"``,有人可以帮忙吗?
一种可能是:
lapply(df_iso, function(x) names(x)[8])
$AUS
[1] "year"
$BRA
[1] "year"
$ECU
[1] "year"
$NLD
[1] "year"
使用 sapply 的解决方案:
sapply(df_iso, function(i){
colnames(i)[8]
})
AUS BRA ECU NLD
"year" "year" "year" "year"
选项purrr
library(purrr)
map(df_iso, ~ names(.x)[8])