2012-03-01 5 views
3

Почему rbind конвертирует мой список числовых элементов в символ?Почему rbind преобразует список числовых элементов в матрицу символов?

> class(mymatrix.list) 
[1] "list" 
> class(mymatrix.list[[1]]) 
[1] "numeric" 
> mymatrix.results = do.call(rbind, mymatrix.list) 
> class(mymatrix.results) 
[1] "matrix" 
> class(mymatrix.results[1]) 
[1] "character" 
+0

Будет легче помочь, если вы разместите минимальный воспроизводимый пример. – Andrie

+1

Вы _should_ предложили 'lapply (mymatrix.list, class)'. –

ответ

4

Возможно, потому что один из элементов в вашем списке содержит символы?

mymatrix.list <- list() 
for(i in 1:10){ 
    mymatrix.list[[i]] <- rnorm(26) 
} 

class(mymatrix.list) 
# [1] "list" 
class(mymatrix.list[[1]]) 
# [1] "numeric" 
mymatrix <- do.call(rbind, mymatrix.list) 
class(mymatrix) 
# [1] "matrix" 
class(mymatrix[1]) 
# [1] "numeric" 

## Add a character vector to your list 
mymatrix.list[[11]] <- LETTERS 
mymatrix <- do.call(rbind, mymatrix.list) 
class(mymatrix) 
# [1] "matrix" 
class(mymatrix[1]) 
# [1] "character" 
+0

Действительно, ошибка в моей программе. У меня был один из элементов в списке типа символа. –

1

первый arguement из rbind является ... и файл справки гласит:

Arguments: 

    ...: vectors or matrices. These can be given as named arguments. 
      Other R objects will be coerced as appropriate: see sections 
      ‘Details’ and ‘Value’. (For the ‘"data.frame"’ method of 
      ‘cbind’ these can be further arguments to ‘data.frame’ such 
      as ‘stringsAsFactors’.) 

и преобразования символов, вероятно, из-за одного из списков, содержащих символ.