【发布时间】:2019-10-18 09:03:29
【问题描述】:
我有一个数据框列表,其中一些数据框的列名有点混乱,我的意图是遍历数据框列的列表,识别那些列混乱的数据框然后能够删除列名并将第一行替换为列名,这是我的数据框示例
dput(df)
structure(list(v1 = c("Silva", "Brandon", "Mango"),
v2 = c("James","Jane", "Egg")),
class = "data.frame", row.names = c(NA, -3L))
dput(df2)
structure(list(X2 = c("v1", "Brandon", "Mango"),
X..X1 = c("v2","Jane", "Egg")),
class = "data.frame", row.names = c(NA, -3L))
现在这是我的数据框的示例,其中我们有一个数据框,其中 df2 中的列名显示为行,我需要循环查看哪些数据框弄乱了像 df2 这样的列名,然后删除列名并替换第一行这是我尝试过的
dflist <- list(df,df2)
remNames <- c("X2", "X..x1")
dflist <- c()
for (i in 1:length(dflist)) {
if(dflist[[i]][names(dflist[[i]])] == remNames){
colnames(dflist[[i]]) <- dflist[[i]][1,]
dflist[[i]] = dflist[[i]][-1, ]
}
}
这不起作用,我错过了什么,我的预期输出是具有相同列名的数据框列表,这些列名应该是 V1 和 V2
【问题讨论】:
-
删除
dflist<-c(),因为现在dflist将为空,将if(dflist[[i]][names(dflist[[i]])] == remNames)替换为if(any(names(dflist[[i]]) == remNames)),看看for循环内部发生了什么;定义 i=1 然后像往常一样在 R 控制台中运行主体。 -
@A. Suliman 我不明白,你能重现代码吗?我已经尝试修复它,但我得到了错误