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

rbind data frames with values with different decimal numbers

在这个例子中我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)

可能是这样的:

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

您可以使用 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