在此示例中,我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)
答案 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