R语言rbind报错:参数列数不匹配,求保留共同列解决方案
解决R中
rbind列数不匹配的问题 刚接触R遇到这个问题太正常了,毕竟和Python里的合并逻辑还是有点差异的。要只保留训练集和测试集共有的列再合并,其实几步就能搞定:
找出两者共有的列名
用intersect()函数可以快速获取两个数据集列名的交集:common_cols <- intersect(colnames(train), colnames(test))这个函数会返回同时存在于
train和test中的所有列名,相当于帮你精准筛选出两边都有的特征。筛选出仅含共有列的数据集
分别对训练集和测试集做列筛选,只保留刚才得到的共有列:train_clean <- train[, common_cols] test_clean <- test[, common_cols]这里R的索引逻辑是
[行, 列],逗号左边留空就表示保留所有行,右边指定我们要的列名即可。合并处理后的数据集
现在两个数据集的列数完全一致,直接用rbind()合并就不会报错了:train_test <- rbind(train_clean, test_clean)
额外提个小提醒:如果后续特征工程涉及因子变量,最好检查一下两个数据集里对应因子列的水平是否一致,不然合并后可能会出现因子水平不匹配的小问题哦。
内容的提问来源于stack exchange,提问作者noob
相关产品推荐
相关产品推荐

