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)

person milan    schedule 29.08.2017    source источник
comment
Возможно, вам придется хранить в list, иначе из-за повышения типа будет один класс, т.е. list(one, two)   -  person akrun    schedule 29.08.2017


Ответы (2)


Вы можете использовать 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
person Sotos    schedule 29.08.2017

Может быть, что-то вроде этого:

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