使用lapply处理dataframe列表时出现"incorrect number of dimensions"错误的解决咨询
问题解决
错误原因
使用c()合并两个dataframe时,该函数会将dataframe的列拆分为独立的一维向量存入列表,导致lapply遍历的是单个列而非完整的dataframe,因此触发维度错误。正确的列表创建方式应使用list(),它会保留每个元素的dataframe结构。
修正代码
# 创建包含两个dataframe的列表(用list替代c) list_info <- list(normheart.info, disheart.info) # 批量调整行名与列名 list_info <- list_info %>% lapply( function(x){ # 将第一行设为列名 colnames(x) <- x[1, ] # 将第一列设为行名 rownames(x) <- x[, 1] # 删除第一行和第一列,drop=FALSE确保结果仍为dataframe x <- x[-1, -1, drop = FALSE] return(x) } )
额外提示
如果原始dataframe的第一行/列是因子类型,建议先转为字符型再赋值给列名/行名,避免格式异常:
colnames(x) <- as.character(x[1, ]) rownames(x) <- as.character(x[, 1])
内容的提问来源于stack exchange,提问作者B-WingBreaker
相关产品推荐
相关产品推荐

