Я пытаюсь понять внутреннее представление контейнеров данных в R
. Поэтому я попробовал следующее:
Матрица как вектор с атрибутом "dim":
matrix(1:9,nrow=3,ncol=2)
эквивалентно
temp <- 1:6
attr(temp,'dim') <- c(3,2)
temp
DataFrame как список с атрибутами " Имена "," class "и" row.names ":
data.frame(
integerCol=1:9,
characterCol=sample(c('safe','risky','unsafe'),9,replace=TRUE),
logicalCol=sample(c(T,F),9,replace=TRUE)
)
эквивалентен
list(
integerCol=1:9,
characterCol=sample(c('safe','risky','unsafe'),9,replace=TRUE),
logicalCol=sample(c(T,F),9,replace=TRUE)
) -> temp
attr(temp,'class') <- 'data.frame'
attr(temp,'row.names') <- 1:9
temp
Фактор как вектор с атрибутами" level "и" class ":
factor(c('risky','safe','risky','unsafe','safe'))
должно быть эквивалентно следующему:
temp <- c(1,2,1,3,2)
attr(temp,'levels') <- c('risky','safe','unsafe')
attr(temp,'class') <- 'factor'
temp
Но это не удается. Почему я не могу создать фактор здесь?
Также есть ли способ избежать создания временной переменной temp
в приведенных выше примерах? т.е. если есть какой-то способ передачи базовых атрибутов структурам данных во время создания, например c(1,2,3,4,5,6, 'dim'=c(3,2))
?