2013-10-22 3 views
0

this answer의 코드를 사용하여 기차 데이터를 두 세트로 나누었습니다.1 열 data.frame을 분할하고 data.frame을 출력으로 가져 오는 방법은 무엇입니까?

trainLabels <- read.csv(trainLabels.file, stringsAsFactors=F, header=FALSE) 

> str(trainLabels) 
'data.frame': 1000 obs. of 1 variable: 
$ V1: int 1 0 0 1 0 1 0 1 1 0 ... 

trainLabelsTrain <- trainLabels[train_ind, ] 
trainLabelsTest <- trainLabels[-train_ind, ] 

> str(trainLabelsTrain) 
int [1:750] 0 1 0 0 0 0 1 1 1 0 ... 

그럼 난 그냥 원래 데이터 (trainLabels) 같은 data.frame을하고 싶습니다.

어떻게 data.frame을 얻을 수 있습니까?

+1

하위 집합 줄에 drop = FALSE을 넣습니다. – Thomas

답변

3

는 단일 칼럼이 있으므로

# drop = TRUE by default in `[` subsetting... 
df <- data.frame(a = 1:10) 
df[ c(1,3,5) , ] 
#[1] 1 3 5 

# With drop = FALSE... 
df[ c(1,3,5) , , drop = FALSE ] 
# a 
#1 1 
#3 3 
#5 5 

drop = TRUE R은,이 경우, 가능한 최저 치수 결과를 강요 원자 벡터를 시도 할 때 ...하여 부분 집합의 drop = FALSE 명령을 사용 . 분명히

0

내가 SimonO101의 대답 @ 좋아하지만, 난 그냥 하나가 또한 여기에 split 기능을 사용할 수 있음을 추가 거라고 생각 :

> str(out) 
List of 2 
$ 0:'data.frame':  4 obs. of 1 variable: 
    ..$ a: int [1:4] 1 2 5 10 
$ 1:'data.frame':  6 obs. of 1 variable: 
    ..$ a: int [1:6] 3 4 6 7 8 9 
: 결과는 두 dataframes의 목록이 될 것

df <- data.frame(a = 1:10) 
set.seed(1) 
x <- rbinom(10,1,.5) 
out <- split(df,x) 

[의 기본값은 drop=TRUE이지만 split의 기본값은 drop=FALSE입니다.

관련 문제