2014-10-25 5 views
-1

나는 data.frame을 가지고 있는데, 이제 각 행을 키 이름으로 목록에 변환하고 해당 행의 프레임 값을 값으로 변환하려고합니다.R : data.frame rows to list

f <- function(row) { mongo.bson.from.list(row to list) } 
apply(df, 1, f) 

은 데이터 프레임은 모양이

> h 
    id  stamp stmt1 stmt2 stmt3 stmt4 stmt5 stmt6 stmt7 stmt8 
1 1 1398288482 "0" "1" "0" "1" "1" "1" "0" "1" 
2 2 1398288765 "1" "0" "0" "0" "1" "1" "0" "0" 
3 3 1398288804 "1" "1" "1" "1" "1" "1" "1" "1" 

는 내가 원하는

list(id=1, stamp=1398288482, stmt1="0", stmt2="1", ...) 
+0

왜 downvote? 설명해 주시겠습니까? –

+0

나는 (아직) downvoters가 아니었지만, 데이터 프레임 예제와 올바른 출력이 그 예제에서 어떻게 나오는지에 대한 예를 포함시켜야합니다. R 오브젝트의 정확한 설명을위한 "키"라는 용어는 없습니다. 열 이름은 이미 데이터 프레임 열을 색인화하는 데 사용될 수 있습니다. 아마도 각 행을 별도의 이름이 지정된 벡터로 사용하고 싶습니까? 외부 패키지를 사용할 것으로 예상되면로드 할 코드를 포함해야합니다. –

+3

@Jeremy Knees'lapply (split (h, 1 : nrow (h)), as.list)'시도해보십시오. – akrun

답변

1

에 dataframe의 각 행을 변환 할 수있는 자동화 된 방법은 @에 변화를보고 흥미 롭군요 아쿤의 제안 :

lapply(split(h, 1:nrow(h)), as.list) # does deliver the requested object 
lapply(split(h, 1:nrow(h)), list)  # a three element list with named atomic vectors 
lapply(split(h, 1:nrow(h)), c)  # same as first 
lapply(split(h, 1:nrow(h)), structure) #looks the same as first, but are actually data.frames 

당신이 "정상화"양식을 원하는 경우 유용 할 수 있습니다 -approach reshape(..., direction="long") :

> reshape(h, varying=3:10, direction="long", sep="") 
    id  stamp time stmt 
1.1 1 1398288482 1 0 
2.1 2 1398288765 1 1 
3.1 3 1398288804 1 1 
1.2 1 1398288482 2 1 
2.2 2 1398288765 2 0 
3.2 3 1398288804 2 1 
1.3 1 1398288482 3 0 
2.3 2 1398288765 3 0 
3.3 3 1398288804 3 1 
1.4 1 1398288482 4 1 
2.4 2 1398288765 4 0 
3.4 3 1398288804 4 1 
1.5 1 1398288482 5 1 
2.5 2 1398288765 5 1 
3.5 3 1398288804 5 1 
1.6 1 1398288482 6 1 
2.6 2 1398288765 6 1 
3.6 3 1398288804 6 1 
1.7 1 1398288482 7 0 
2.7 2 1398288765 7 0 
3.7 3 1398288804 7 1 
1.8 1 1398288482 8 1 
2.8 2 1398288765 8 0 
3.8 3 1398288804 8 1