2014-06-13 2 views
0

크로스 테이블을 만들려는 루프가 있습니다. 내 데이터 세트 : 21 열, 1300 행. 열 1, 열 2, 열 1, 열 3, ..., 열 1, 열 21에 대한 교차 테이블을 만들고 싶습니다. "table"함수를 사용합니다. 루프를 시도하십시오. 그녀는 내 코드입니다 :크로스 테이블을 만들기위한 루프

x=data 
for (i in length (x)){tab[i]=table(x[,1],x[i]) 

여기서 tab은 크로스 테이블의 출력입니다.

나는 실행하려고했지만 실패했습니다. 문제를 해결하는 방법을 알려주십시오. 그것은 20 같은 경고를 준다 : 탭 [I]는 ([I]는 X [1], X) 교체 항목 수

+0

출력 형식을 변경 하시겠습니까? 루프 밖에서'tab'을 정의 했습니까? 'for (i in length (x))'는 'i = length (x)'값에 대해서만 한 번만 실행됩니다. 'class (x) 란 무엇입니까? 'x [, 1]'과'x [i] '가 당신이 같은 객체에 대해 의도 한대로 작동하지 않을 것 같습니다. – MrFlick

+0

루프를 사용하면서 정의하는 방법을 모르므로 탭을 정의하지 않았습니다. 단일 사례 인 경우 탭 정의 방법을 알고 있습니다. 예를 들어, a = x [, 1], b = x [, 2], tab = 테이블 (a, b). 그리고 (ncolumn (x)에서) {tab [i] = table (x [, 1], x [i]). 형식은 크로스 테이블과 같아야합니다. – user3685047

+0

"크로스 테이블"이 무엇인지 알 수 없습니다. 예제를 제공해 줄 수 있습니까? – MrFlick

답변

0

될 수도 도움 여분의 길이의 배수를 표 아니다

set.seed(25) 
mat1 <- matrix(sample(1:10, 100,replace=TRUE), 10,10) 

fun1 <- function(dat, colN) { 
tab <- vector("list", colN) 
for (i in seq_len(ncol(dat))) { 
    tab[[i]] <- table(dat[, 1], dat[, i]) 
    } 
    tab 
} 

res <- fun1(mat1, 10) ##change the column number accordingly 
+0

정말 고마워요! @akrun. 그것은 작동합니다. – user3685047

+0

하지만 개별적으로 탭 [[1]]을 사용할 수 있습니까? 예를 들어, 나는 탭 [1]을보고 싶다. 왜냐하면 각 탭에 대해 φ 계수 또는 cohen.kappa를 얻고 싶기 때문입니다. 'phi (tab [[1]]) cohen.kappa (tab [[1]])' – user3685047

+0

예, 목록 구성 요소를 추출 할 수 있습니다. 위의 예에서 res [[1]], res [[2]] 등. phi, cohen.kappa에 사용한 패키지를 제공하십시오. – akrun

관련 문제