2014-06-16 2 views
0

나는 R에 다소 익숙하다. 그래서 나의 기본적인 질문을 용서해라.그룹 및 행마다 cca

전 데이터 세트 (358 개 사이트, 40 개의 비 생물 매개 변수, 100 종 관찰)에서 CCA를 수행합니다.

library(vegan) 
env <- read.table("env.txt", header = TRUE, sep = "\t", dec = ",") 
otu <- read.table(otu.txt", header = TRUE, sep = "\t", dec = ",") 
cca <- cca(otu~., data=env) 
cca.plot <- plot(cca, choices=c(1,2)) 
vif.cca(cca) 
ccared <- cca(formula = otu ~EnvPar1,2,n, data = env) 
ccared.plot <- plot(ccared, choices=c(1,2)) 
orditorp(ccared.plot, display="sites") 

이 처음 숫자 샘플의 이름을 포함하는 최초의 열은 변수로 해석되었다 첫 번째 열 (에서 샘플 이름을 사용하지 않고 작동하므로 내가 통해 플롯에 사이트 이름을 추가하면 내가. 그 정보가없는 테이블을 사용 orditorp, 그것은 줄에 "row.name = n"을 부여합니다.) 그러나 샘플 이름을 사용하고 싶습니다.

envnames <- read.table("envwithnames.txt", header = TRUE, row.names=1, sep = "\t", dec = ",") 
otunames <- read.table("otuwithnames.txt", header = TRUE, row.names=1, sep = "\t", dec = ",") 

ENV/OTU/envnames/otunames의 조합 : 나는 row.names 샘플 이름 정보와 두 테이블에 = 1을 시도했다. CCA는 어떤 경우에 잘 작동하지만, 어떤 플롯 명령은

plot.ccarownames <- plot(cca(ccarownames, choices=c(1,2))) 
Error in rowSums(X) : 'x' must be numeric 

이 내 두 번째 문제는 그 연결되어 굴복 : 358 개 사이트 6 개 그룹 (4x60,2x59)로 그룹화됩니다. 완전한 행렬은이 정보를 여분의 열로 추정합니다. 행 이름 문제를 해결할 수 없었기 때문에 나는 어쨌든 명목상의 데이터에 더욱 집착했습니다. 원래의 행렬에는 생물학적 관측이 뒤 따르는 첫 번째 열 (샘플 이름, 숫자, 쉽게 명목으로 변형 될 수 있음)과 두 번째 열 (그룹 신원, 명목)이 있습니다. 내가 좋아하는 것이 무엇

은이합니다 : 그룹 당 사이트를 색칠 여섯 개 그룹을 포함

  1. CCA를.
  2. 하나의 그룹에 대한 데이터 만 포함하는 CCA (수동 입력없이 개별 입력 테이블 구성)
  3. 원래 샘플 이름을 사용하는 CCA 플롯.

도움을 주시면 감사하겠습니다. 정말로, 나는 어제 아침 이후로 붙어 있습니다 :/

+0

"행 이름을 사용하면 무엇을 의미합니까?" 당신이 그들을 당신의 식탁으로 읽으면? 또는 모델에서 사용하는 경우? 이것은 불분명하다. 나는 또한 당신이 그룹에 대해 이야기하고있는 여분의 칼럼이나 CCA가이 경우 어떻게 "실패"하는지 정확히 알지 못합니다. [재현 가능한 예] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)를 만드는 시간을 가져주십시오. 또한 기본 패키지 밖에서 함수를 사용할 때로드중인 라이브러리를 명확하게하십시오. 우리가 당신과 같은 오류를 범할 수 있다면 우리는 더 많이 도울 수 있습니다. – MrFlick

+0

** 채식 주의자 ** 개발자 중 한 명으로, 나는 이것이 어쩌면 반복적으로 어딘가에서 사용자 오류라고 자신있게 말할 수 있습니다. 비건 채식은 데이터 프레임에 적절하게 설정하면 행 이름을 사용합니다. 이들을 데이터 객체에 남겨두면,'cca()'가 작동하는 첫 번째 일은 as.matrix()를 통해 데이터를 행렬로 변환한다는 것입니다. 따라서 문자 행렬을 얻을 수 있습니다 데이터 프레임에 숫자가 아닌 정보가있는 경우 *. MrFlick이 말했듯이, 이것을 재현 할 수있는 재현 가능한 예제가 필요합니다. –

+0

안녕하세요, 빠른 답변을 주셔서 감사합니다. 나는 elobarate해야한다 : 첫째로 나는 read.table (x, header = 1, sep/dec)을 사용했고, x는 숫자 샘플 이름을 가진 컬럼을 포함했다. 이 열은 변수로 해석되었고 cca는 엉망이되었습니다. read.table (x, header = 1, row.names = 1, sep/dec)을 시도했는데'rowSums (X) : 'x'는 숫자 여야 함 '메시지에서 Error를 얻었습니다. 내 초기 질문을 업데이트하지 않아. – nouse

답변

0

저는 채식주의 자의 cca()를 사용하고 있습니다. 그러나 당신의 문제 중 일부는 가지고 있습니다. 그러나 나는 원래의 "행 이름을 해결할 수있었습니다. "문제. 334 종의 환경 요인과 39 가지의 환경 요인으로 41 가지 토양의 자료에 대한 CCA 분석을하고 있습니다. 내 경우 내가

rownames(MyDataSet) <- MyDataSet$ObservationNamesColumn

를 사용 (내가 여기 예를 위해 같은 MyDataSet로 같은 기본 이름을 사용) 그러나 나는 아직도 (토양 질감 등) 수치하지 않았다 환경 적 요인이 있었다. 원래의 데이터 세트에 실수가 있거나 다른 이유로 숫자로 해석되지 않는 비 생물 적 요인이있는 경우 비 숫자 요인을 검사 해 볼 수 있습니다. 이렇게하려면 각 변수의 성격을 알려주는 str(MyDataSet) 명령을 사용하거나 동일하지만 다른 출력을 알려주는 lapply(MyDataSet, class) 명령을 사용할 수 있습니다.

숫자가 아닌 (텍스처와 같은) 비 생물학적 요인이 있고이를 제거하려는 경우 숫자 변수 만 사용하여 완전히 새로운 데이터 세트를 만들 수 있습니다 (여전히 관찰을 유지할 수 있습니다 그들은) 행 이름으로 정의 된 같은 이름이 할 오히려 쉽게이 비슷한 사용하여 수행 할 수 있습니다 : 이것은 원래하지만 열 같은 행이 새로운 데이터 세트를 생성

MyDataSet.num <- MyDataSet[,sapply(MyDataSet, is.numeric)] 

을 (변수)를 숫자 값과 비교합니다. 이 새로운 데이터 세트를 사용하여 작업을 계속할 수 있어야합니다.

저는 R 프로그래밍과 통계학에 새로운 것이지만 (저는 미생물 학자입니다) 그러나 이것이 도움이되기를 바랍니다!