почему так.матрица добавить лишние пробелы при преобразовании числовых символов?


Если вы используете обратиться за рядами данных.рамка с символов и числовых столбцов, применять, использует как.матрица внутренне для преобразования данных.рама только символы. Но если числовой столбец состоит из чисел разной длины, как.матрица добавляет пробелы, чтобы соответствовать высоким/"длинный" номер.

Пример:

df <- data.frame(id1=c(rep("a",3)),id2=c(100,90,8), stringsAsFactors = FALSE) df##   id1 id2## 1   a 100## 2   a  90## 3   a   8as.matrix(df)##      id1 id2  ## [1,] "a" "100"## [2,] "a" " 90"## [3,] "a" "  8"

Я бы ожидал, что результат будет:

     id1 id2  [1,] "a" "100"[2,] "a" "90"[3,] "a" "8"

Почему лишние пробелы?

Они могут создать неожиданные результаты при использовании применять на данных.рамка:

myfunc <- function(row){  paste(row[1], row[2], sep = "")}> apply(df, 1, myfunc)[1] "a100" "a 90" "a  8"> 

В то время как цикл дает ожидаемый результат.

> for (i in 1:nrow(df)){  print(myfunc(df[i,]))}[1] "a100"[1] "a90"[1] "a8"

и

> paste(df[,1], df[,2], sep = "")[1] "a100" "a90"  "a8"  

Есть ли ситуации, где лишние пробелы, которые добавляются как.матрица полезна?