在保持每列的类的同时向数据框添加行

时间:2014-02-20 08:13:13

标签: r dataframe

我想在显示列总数的数据框中添加一行。

test = data.frame('name' = c('a','b','c'),'x' = c(1,2,3),'y' = c(1,2,3))
class(test[,2])
[1] "numeric"

test = rbind(test,c('Total',apply(test[,-1],2,sum)))
   name x y
1     a 1 1
2     b 2 2
3     c 3 3
4 Total 6 6

class(test[,2])
[1] "character"

我需要数字列保持数字。 我明白这是因为我试图添加的混合向量实际上是一个字符向量。这有什么好办法?我尝试使用列表进行rbind,但它不适用于apply函数。

提前致谢

2 个答案:

答案 0 :(得分:1)

您需要将该行设为具有正确名称的三元素列表。此外,您的第一列是因子向量,因此您需要处理或不使其成为一个因素:

test = data.frame('name' = c('a','b','c'),
 'x' = c(1,2,3),
 'y' = c(1,2,3),
 stringsAsFactors=FALSE)
 test = rbind(test,c(name='Total',as.list(apply(test[,-1],2,sum))))

答案 1 :(得分:0)

您可以按照自己的方式进行操作,然后将这些列更改回数字。

test[,2:3] <- sapply(test[,2:3], as.numeric)