【发布时间】:2011-06-24 05:31:00
【问题描述】:
我有一个数据框,我想在其中添加一个额外的行来汇总每一列的值。例如,假设我有这些数据:
x <- data.frame(Language=c("C++", "Java", "Python"),
Files=c(4009, 210, 35),
LOC=c(15328,876, 200),
stringsAsFactors=FALSE)
数据如下所示:
Language Files LOC
1 C++ 4009 15328
2 Java 210 876
3 Python 35 200
我的直觉是这样做:
y <- rbind(x, c("Total", colSums(x[,2:3])))
这有效,它计算总数:
> y
Language Files LOC
1 C++ 4009 15328
2 Java 210 876
3 Python 35 200
4 Total 4254 16404
问题是 Files 和 LOC 列都被转换成字符串了:
> y$LOC
[1] "15328" "876" "200" "16404"
我知道发生这种情况是因为我创建了一个向量c("Total", colSums(x[,2:3]),其输入既是数字又是字符串,并且它将所有元素转换为通用类型,以便所有向量元素都相同。然后同样的事情发生在 Files 和 LOC 列上。
有什么更好的方法来做到这一点?
【问题讨论】: