R语言构建统计信息data.frame时出现行重复问题求解
问题原因
R构建data.frame时会自动循环补齐长度不一致的列:你定义的somme、produit等统计值都是长度为1的标量,只有minmax是长度为2的向量,因此其他列会自动重复1次补齐到2行,就出现了行重复的问题。
解决方法
你预期的minmax列是逗号拼接的字符串,只需要把原本长度为2的向量,通过paste()函数拼接成长度为1的字符串即可,修改后的完整代码如下:
x <- c(4, 10, 3, 30, 2, 5, 20, 12, 25, 9) somme <- sum(x) message("Somme: ", somme) produit <- prod(x) message("Produits: ", produit) moyenne <- mean(x) message("Moyenne: ", moyenne) variance <- var(x) message("Variance: ", variance) ecart_type <- sd(x) message("Ecart type: ", ecart_type) minimum <- min(x) message("Minimum: ", minimum) maximum <- max(x) message("Maximum: ", maximum) # 修改此处:将两个最值拼接为长度1的字符串 minmax <- paste(minimum, maximum, sep = ",") recap <- data.frame(somme, produit, moyenne, variance, ecart_type, minimum, maximum, minmax) recap
运行后得到的结果和你预期一致:
somme produit moyenne variance ecart_type minimum maximum minmax 1 120 1.944e+09 12 96 9.797959 2 30 2,30
如果后续需要直接调用minmax列的最值做数值计算,不想存为字符串,也可以用列表列的方式实现:将minmax的定义改为minmax = I(list(c(minimum, maximum))),此时data.frame只会生成1行,minmax列的每个元素都是包含两个数值的向量,只是打印时不会直接显示为2,30的格式。
内容的提问来源于stack exchange,提问作者Oussama Bouchikhi
相关产品推荐
相关产品推荐

