Pergunta

I have preallocated a 3D array and try to fill it with data. However, whenever I do this with a previously defined data.frame collumn, the array gets mysteriously converted to a list, which messes up everything. Converting the data.frame collumn to a vector does not help it.

Example:

exampleArray <- array(dim=c(3,4,6))
exampleArray[2,3,] <- c(1:6) # direct filling works perfectly

exampleArray
str(exampleArray) # output as expected

Problem:

exampleArray <- array(dim=c(3,4,6))
exampleContent <- as.vector(as.data.frame(c(1:6)))
exampleArray[2,3,] <- exampleContent # filling array from a data.frame column
# no errors or warnings

exampleArray    
str(exampleArray)  # list-like output!

Is there any way I can get around this and fill up my array normally?

Thanks for your suggestions!

Foi útil?

Solução

Try this:

exampleArray <- array(dim=c(3,4,6))
exampleContent <- as.data.frame(c(1:6))
> exampleContent[,1]
[1] 1 2 3 4 5 6
exampleArray[2,3,] <- exampleContent[,1] # take the desired column
# no errors or warnings
str(exampleArray)
int [1:3, 1:4, 1:6] NA NA NA NA NA NA NA 1 NA NA ...

You were trying to insert data frame in array, which won't work. You should use the dataframe$column or dataframe[,1] instead.

Also, as.vector doesn't do anything in as.vector(as.data.frame(c(1:6))), you were probably after as.vector(as.data.frame(c(1:6))), although that doesn't work:

as.vector(as.data.frame(c(1:6)))
Error: (list) object cannot be coerced to type 'double'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top