Как контролировать поведение вставки в data.frame для столбцов целого типа? - PullRequest
5 голосов
/ 02 апреля 2012

Вот пример кода, который дает интересный вывод:

> gg<-data.frame(x=c("a","b"),y=as.integer(c(1000,100000)))
> gg
  x      y
1 a   1000
2 b 100000
> apply(gg,1,paste,collapse="")
[1] "a  1000" "b100000"
> apply(gg[1,],1,paste,collapse="")
      1 
"a1000" 

В первом apply запуске R каким-то образом знает, как заполнять дополнительные пробелы. Как это происходит, и возможно ли контролировать это поведение?

1 Ответ

6 голосов
/ 02 апреля 2012

apply работает только с массивом или матрицей, поэтому сначала нужно преобразовать ваш data.frame в матрицу.as.matrix(gg) создает заполнение.

Глядя на as.matrix.data.frame, заполнение вызывается вызовом format (на самом деле format.default), который в итоге вызывает prettyNum.prettyNum имеет аргумент preserve.width со значением по умолчанию "common".

Если вы хотите больше контролировать это поведение, преобразуйте каждый столбец в вашем data.frame в символьный вектор перед вызовом apply:

gg[,2] <- as.character(gg[,2])
apply(gg,1,paste,collapse="")
# [1] "a1000"   "b100000"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...