2012-05-11 3 views
3

할 방법이 있습니까?크기 M x N의 데이터 프레임을 만드는 방법 R

나는이 함께 붙어 :

m <- 10 # nof row 
n <- 5 # nof column 

# We will fill each cell with '0' 

all <-c() 
for (i in 1:m) { 
    row_i <- c(rep(0,n)) 
    all <- c(all,row_i) 
} 

어느 단지 출력으로 1 개 행을 만듭니다.

+1

'nof_range'란 무엇입니까? – mdsumner

+0

@mdsumner : 죄송합니다. 수정했습니다. – neversaint

+0

아래의 답이 가장 좋지만'rbind'를'c '가 아닌'all <- rbind (all, row_i)'를 사용하면 코드가 작동합니다. –

답변

7

왜 매트릭스를 사용하지 않습니까? data.frames은 다양한 유형의 열을 저장하기위한 것입니다. 당신이 정말 data.frame를 원하는 경우

그래서,

m = 10 
n = 5 
mat = matrix(0, nrow = m, ncol = n) 

1로 강제 - 열 이름은 단순히 기본값이됩니다 :

dat = as.data.frame(mat) 
names(dat) 
[1] "V1" "V2" "V3" "V4" "V5" 

당신의 접근 방식의 문제는 단순히 추가이다 원하는 값을 무시하고 차례대로 값을 지정하십시오. 이렇게 할 수는 있지만, 데이터를 키우는 것은 좋지 않습니다. 위와 같이 모든 것을 미리 할당하는 것이 좋습니다. 또한, 어쨌든이 결과는 매트릭스로 생각됩니다.

경고 : 코드가 잘못되었습니다.

m <- 10 # nof row 
n <- 5 # nof column 

all <- NULL 
for (i in 1:m) { 
    row_i <- c(rep(0,n)) 
    all <- rbind(all,row_i) 
} 
4

이렇게하면 data.frame이 0으로 채워집니다.

as.data.frame(lapply(structure(.Data=1:N,.Names=1:N),function(x) numeric(M))) 
+0

mdsummer 솔루션은 좀 더 우아하지만 솔루션을 확장하여 다른 것을 생성 할 수 있습니다 열의 클래스 –

관련 문제