2011-12-20 3 views
2

나는 다음과 같다 다음 데이터 프레임 (정보)이 : 클래스 형으로R : CSV로 목록 출력 데이터 프레임

> info[1:5,] 
        field BinningMethod DataType numLevels cumLevel           factLevels 
    1   data_len  EQUAL AREA DOUBLE   5  5 (-inf,2.0], (2.0,6.0), [6.0,8.0), [8.0,+inf), MISSING 
    2 dns_count_add_rr DISCRETE MAPPING DOUBLE   3  8          0.0, 1.0, MISSING 
    3 dns_count_answers DISCRETE MAPPING DOUBLE   3  11          0.0, 1.0, MISSING 
    4 dns_count_auth_rr DISCRETE MAPPING DOUBLE   3  14          0.0, 1.0, MISSING 
    5 dns_count_queries DISCRETE MAPPING DOUBLE   2  16           1.0, MISSING 

:

> sapply(info, class) 
    field BinningMethod  DataType  numLevels  cumLevel factLevels 
    "character" "character" "character"  "numeric"  "numeric"  "list" 

내가 원하는 출력을 'info'를 CSV 파일에 저장하지만 목록 필드 (factLevels)를 처리하는 방법을 모릅니다. 현재 다음 오류가 발생합니다.

> write.csv(info, 
+ file = paste("FIELDS_", modelFile, sep=""), 
+ row.names = FALSE, na = "") 
Error in write.table(x, file, nrow(x), p, rnames, sep, eol, na, dec, as.integer(quote), : unimplemented type 'list' in 'EncodeElement' 

어떤 해결책이 있습니까? 내가 가지고있는 유일한 요구 사항은 자바 프로그램에서 그것을 읽고 다른 값들을 구분할 수 있어야한다는 것이다.

답변

3

@Seb이이 주제에 대해 느슨하게 답변 한 (지금 삭제 된) 것을 볼 수 있습니다. (일반적으로 데이터 프레임의 열은 R에있는 목록이 아니어야합니다.) 그러나이 정보를 파일로 덤프하는 것이 유일한 목적 일 경우 아마도 더 적절할 것입니다.

하나의 간단한 옵션 일 수 있습니다 (예 : 쉼표가 아닌 구분 기호를 사용하여) 값을 함께 붙여 목록에서 factLevels 열을 문자 벡터로 변환하십시오. 아마도 다음과 같을 것입니다 :

info$factLevels <- sapply(info$factLevels, 
          FUN = paste,collapse = "-") 

그런 다음 요소 수준을 올바르게 구문 분석하도록 Java 프로그램을 조정해야합니다.

+0

이렇게하면됩니다. 목록을 하나의 문자열에 넣을 때 'as.character'호출을 제거했습니다. 그것없이, 붙여 넣기 기능은 이제 제대로 작동합니다. 감사. – bnjmn

+0

@ 벤자민 저를 시정 해 주셔서 감사합니다! – joran