获取列表中 df 的特定列的名称

Getting the name of a specific column of df within a list

示例数据:

df1 <- as.data.frame(rbind(c(1,2,3), c(1, NA, 4), c(NA, NA, NA), c(4,6,7), c(4, 8, NA)))
df2 <- as.data.frame(rbind(c(1,2,3), c(1, NA, 4), c(4,6,7), c(NA, NA, NA), c(4, 8, NA)))

dfList <- list(df1,df2)
colnames <- c("A","B","C") 

dfList[[1]]

#  V1 V2 V3
# 1  1  2  3
# 2  1 NA  4
# 3 NA NA NA
# 4  4  6  7
# 5  4  8 NA

dfList[[2]]

#  V1 V2 V3
# 1  1  2  3
# 2  1 NA  4
# 3  4  6  7
# 4 NA NA NA
# 5  4  8 NA

# I know I can get the names out like this:

namesvec <- lapply(dfList, function(x) lapply(x, names))

但是如果我想得到一个特定的名字,什么都行不通:

names(namesvec[[1]][[1]])
colnames(namesvec[[1]][[1]])
rownames(namesvec[[1]][[1]])
# lapply(county_list, function(x) lapply(x[1], names))
# lapply(county_list, function(x) lapply(x[[1]], names))

这一定很简单,但它让我发疯..

您不使用 namesvec <- lapply(dfList, function(x) lapply(x, names)) 来获取列表中的所有名称。使用 :

cols <- lapply(dfList, names)
cols
#[[1]]
#[1] "V1" "V2" "V3"

#[[2]]
#[1] "V1" "V2" "V3"

现在要提取特定的列名,请使用:

#First column name of first list
cols[[1]][1]
#[1] "V1"

#third column name of first list. 
cols[[1]][3]
[1] "V3"

#first column of second list.
cols[[2]][1]
[1] "V1"

我们可以使用map

library(purrr)
map(dfList, names)