2013-03-15 2 views
0

나는 R에 상대적으로 신참입니다. 나는 이것을 알아 내려고 노력한 마지막 두 근무일을 찾아 보았습니다. 함수에 의해 생성 된 요소 목록이 있습니다. 나는 길이가 다른 목록에 9 개의 항목이 있습니다. 데이터의 샘플의데이터 프레임 목록 인쇄

>summary(list_dataframes) 
     Length Class Mode 
[1,] 1757 factor numeric 
[2,] 1776 factor numeric 
[3,] 1737 factor numeric 
[4,] 1766 factor numeric 
[5,] 1783 factor numeric 
[6,] 1751 factor numeric 
[7,] 1744 factor numeric 
[8,] 1749 factor numeric 
[9,] 1757 factor numeric 

파트가 나오는대로 :

list_dataframes

[[1]] 

[1] 1776234_at 1779003_at 1776344_at 1777664_at 1772541_at 1774525_at 

[[2]] 

[1] 1771703_at 1776299_at 1772744_at 1780116_at 1775451_at 1778821_at 

[7] 1774342_at 

[[3]] 

[1] 1780116_at 1776262_at 1775451_at 1780200_at 1775704_at 

는 모드 "숫자"말한다 이유는 확실하지 않다. 개별 항목은 숫자와 "S35_at"와 같은 문자가 혼합 된 것입니다.

중복 된 값을 만들지 않고이를 9 열 1783 행의 테이블로 만들고 싶습니다. (그러므로 do.call을 사용하여 시도해 보았지만 작동하지 않았다.) 중복 된 것으로 가득 찼다.) 짧은 공백은 빈 공백에 NA를 붙이거나 비워 둘 수있다.

결국 스프레드 시트에 넣을 수있는 무언가로 끝나야합니다.

이렇게하는 방법이 있어야합니다. 고맙습니다!

데이터의 4 열을 가져 왔지만 데이터의 한 열만 필요할 때 데이터 프레임이 처음에 추가되었다고 추측합니다.이 목록을 생성하는 함수를 부분 집합으로 만들면 하나의 열만 만들 수 있습니다. 실제로는 더 이상 데이터 프레임이 아닌 것처럼 보입니다. 내가 만들고 싶어하는 많은 독서 후

a b c 
xyz xyz tuv 
tuv tuv efg 
efg efg hij 
hij NA NA 
NA NA NA 

NA could be blank as well. 

을하는 테이블

a= xyz,tuv,efg,hij,def 
b= xyz,tuv,efg 
c= tuv,efg,hij,def 

:

dput(head(list_dataframes)) 
list(structure(c(3605L, 5065L, 3663L, 4349L, 1655L, 2700L, 5692L, plus many more 
.Label = c("1769308_at", 
"1769311_at", "1769312_at", "1769313_at", "1769314_at", "1769317_at", plus many more 
this pattern is repeated nine more times 

는 내가 뭘하려고 같을 것이다 테이블을 생성 할 것입니다 목록에 대한 수동 섹션 나는 내가 목록의 묻힌 목록을 생성했다고 판단했습니다. 그것은 내가 원하는 자료가있는 9 개의 항목을 가지고 있습니다. 즉 두 층을 묻었습니다. 즉 [1]을 사용해야했습니다. 또한 단일 열 데이터 프레임이 데이터 프레임을 유지하는 대신 요인이되는 결과를 초래하는 R의 무언가 때문에 더 복잡했습니다. 그것을 해결하기 위해 (일종의) 내 방정식에 한 단계를 더하여 그 요인을 데이터 프레임으로 변경했습니다.

그 후, 내 결과를 생성하기 위해 lapply를 사용할 때 적어도 요인 문제가 해결되었습니다. 그런 다음 다음 단계를 사용하여 데이터 프레임을 꺼낼 수 있습니다.

first <- list_dataframes[[1]] 
second <- list_dataframes[[2]] 
third <- list_dataframes[[3]] 
fourth <- list_dataframes[[4]] 
fifth <- list_dataframes[[5]] 
sixth <- list_dataframes[[6]] 
seventh <- list_dataframes[[7]] 
eighth <- list_dataframes[[8]] 
nineth <- list_dataframes[[9]] 

all_results <- cbindX(first,second,third,fourth,fifth,sixth,seventh, eighth,nineth) 

그러면 write.csv를 사용하여 csv 파일을 작성한 다음 올바른 결과를 얻을 수있었습니다. 그래서 나는 내 대답을 추측한다. 지금은 작동한다는 뜻입니다.

그러나 나는 여전히 나에게 올바른 결과를주고 있지만이 작업을 최적으로 수행 할 때 뭔가를 놓치고 있다고 생각한다.

+0

데이터 집합의 하위 집합을 표시하는 재현 가능한 예제를 게시 할 수 있습니다 (아마도 10-20 행이 있음). –

+0

해당 데이터에 매우 제한된 중복이 있습니다. 귀하의 초기 설명은 높은 중첩을 제안했습니다. 주의를 기울여야겠습니까? –

+0

그것은 내가 중요하게 여기는 특정 가치가있는 작업 목록입니다. 서브 세트는 모두 동일한 4500의 더 큰 세트에서 가져오고 둘 사이에는 약간의 중복이 있지만 많지는 않습니다. do.call에서 중복 된 문제는 최종 열 세트에 50 또는 60 개의 중복이 있다는 것입니다. 스프레드 시트에서 수동으로 제거 할 수는 있지만 프로그램을 배우는 요점을 무너 뜨릴 수 있습니다. –

답변

1

요인 클래스 변수는 정수 값 표시에 사용되는 레이블을 지정하는 문자 벡터 인 첨부 된 특성이있는 정수 모드의 벡터입니다. 나는 이들을 함께 묶는 가장 안전한 방법은 요소 열을 문자 클래스로 변환 한 다음 all=TRUE을 사용하여 merge으로 변환하는 것이라고 생각합니다. 3 가지 데이터 프레임 또는 요소가있는 간단한 예제를 게시 해보십시오.데이터의 복잡성 수준에 관계없이 길이가 10, 9 및 8 인 요약 출력에서 ​​구조를 실제로 식별 할 수는 없습니까?

당신이 수준의 공통 그들에게 모든 요소를 ​​확인하려면

,이를 사용 주석에 명시된 바와 같이

shared_levels <- unique(c(unlist(lapply(list_dataframes)))) 
length(shared_levels) 
new_list <- lapply(list_dataframes, factor, levels=shared_levels) 

, 나는 아직도 당신이 생산되고 상상 테이블의 어떤 종류의 이해하지 않습니다. 구체적인 예가 필요합니다.

+0

고마워! 고마워! –

+0

요인 열을 문자 클래스로 변환하려고했지만 모드 만 변경할 수있었습니다. 어떻게해야합니까? –

+0

'dput (head (object)) '을 게시하여 재현 가능한 예제를 만들어야합니다. 인쇄 된 출력은 레벨이 인쇄되지 않으므로 이러한 요인을 제안하지 않습니다. 인자를 문자로 변환하는 함수는 'as.character'입니다. –