rbind具有不同十进制数值的数据帧

时间:2017-08-29 09:02:14

标签: r decimal rbind

在此示例中,我rbind两个data.frames,结果是所有值都有两个十进制数。但是,我想在第1行和第2行中没有小数。

one <- data.frame(matrix(c(1,2,3,4), ncol=2)); one
two <- data.frame(matrix(c(1.63,8.88,9.17,2.31), ncol=2)); two
rbind(one, two)

2 个答案:

答案 0 :(得分:2)

也许是这样的:

test<-formatC(as.matrix(two),digits=2,format="f")
rbind(one,test)

答案 1 :(得分:1)

您可以使用sprintf,但这会将您的变量转换为字符(而不是数字),即

d1 <- rbind(one, two)
d1[] <- lapply(d1, function(i) sprintf('%.6g', i))

给出,

    X1   X2
1    1    3
2    2    4
3 1.63 9.17
4 8.88 2.31

但结构是,

str(d1)
'data.frame':   4 obs. of  2 variables:
 $ X1: chr  "1" "2" "1.63" "8.88"
 $ X2: chr  "3" "4" "9.17" "2.31"

如果将其转换为数字,您将再次获得这些小数,即

sapply(d1, as.numeric)
#       X1   X2
#[1,] 1.00 3.00
#[2,] 2.00 4.00
#[3,] 1.63 9.17
#[4,] 8.88 2.31