2016-11-10 3 views
2

Я хочу создать кадр данных, и я знаю, сколько строк он будет иметь заранее. Следующий код создает «пустой» кадр данных:Как создать data.frame с определенным количеством строк?

result.data.frame <- data.frame(TrusterID = integer(), 
           TrusteeID = integer(), 
           RTT = integer(), 
           RTD = integer(), 
           RDT = integer(), 
           RDD = integer(), 
           TrustValue = factor(levels = c("1", "-1", "0"))) 

Теперь, как создать кадр данных, как, что с 10 строками и начальными значениями: 0 для целых чисел и «0» для фактора?

+2

это будет ручная работа! используйте rep (0,10) для целых чисел и rep («0», 10) для коэффициента при присвоении самим переменным –

ответ

3

Просто инициализирует кадр данных, как вы уже, а затем сделать

result.data.frame[1:10, ] <- 0 

Результатом этого будет

> str(result.data.frame) 
'data.frame': 10 obs. of 7 variables: 
$ TrusterID : num 0 0 0 0 0 0 0 0 0 0 
$ TrusteeID : num 0 0 0 0 0 0 0 0 0 0 
$ RTT  : num 0 0 0 0 0 0 0 0 0 0 
$ RTD  : num 0 0 0 0 0 0 0 0 0 0 
$ RDT  : num 0 0 0 0 0 0 0 0 0 0 
$ RDD  : num 0 0 0 0 0 0 0 0 0 0 
$ TrustValue: Factor w/ 3 levels "1","-1","0": 3 3 3 3 3 3 3 3 3 3 
2

Вы можете использовать инициализировать значения следующим образом:

val <- as.integer (rep(0,10)) 

result.data.frame <- data.frame(TrusterID = val, 
           TrusteeID = val, 
           RTT = val, 
           RTD = val, 
           RDT = val, 
           RDD = val, 
           TrustValue = factor(as.factor(rep(0,10)), 
                levels = c("1", "-1", "0"))) 


> str(result.data.frame) 
'data.frame': 10 obs. of 7 variables: 
$ TrusterID : int 0 0 0 0 0 0 0 0 0 0 
$ TrusteeID : int 0 0 0 0 0 0 0 0 0 0 
$ RTT  : int 0 0 0 0 0 0 0 0 0 0 
$ RTD  : int 0 0 0 0 0 0 0 0 0 0 
$ RDT  : int 0 0 0 0 0 0 0 0 0 0 
$ RDD  : int 0 0 0 0 0 0 0 0 0 0 
$ TrustValue: Factor w/ 3 levels "1","-1","0": 3 3 3 3 3 3 3 3 3 3 
0

Вы также можете:

n <- 10 
result.data.frame <- data.frame(TrusterID = integer(n), 
           TrusteeID = integer(n), 
           RTT = integer(n), 
           RTD = integer(n), 
           RDT = integer(n), 
           RDD = integer(n), 
           TrustValue = replace(factor(levels = c("1", "-1", "0"))[1:n],1:n,"0")) 

который даст вам:

# TrusterID TrusteeID RTT RTD RDT RDD TrustValue 
# 1   0   0 0 0 0 0   0 
# 2   0   0 0 0 0 0   0 
# 3   0   0 0 0 0 0   0 
# 4   0   0 0 0 0 0   0 
# 5   0   0 0 0 0 0   0 
# 6   0   0 0 0 0 0   0 
# 7   0   0 0 0 0 0   0 
# 8   0   0 0 0 0 0   0 
# 9   0   0 0 0 0 0   0 
# 10   0   0 0 0 0 0   0 
Смежные вопросы