
Continua não dando certo. Acho que é o modo como coloquei o banco de dados, coloquei assim: AREA X1 X2 N 1 1982 9416 11398 2 6546 4084 10630 3 3418 667 4085 4 1503 4408 5911 5 966 339 305 Eu não sei do que se trata os seus dados, mas o teste que vc está aplicando diz que os valores de N são menores que o de X. Tente rodar apenas nas duas primeiras linhas. Vai funcionar. daniel Daniel Tiezzi, MD, PhD Professor Associado Departamento de Ginecologia e Obstetrícia Setor de Mastologia e Oncologia Ginecológica Faculdade de Medicina de Ribeirão Preto - USP Tel.: 16 3602-2488 e-mail: dtiezzi@fmrp.usp.br On Mar 26, 2016, at 8:24 PM, Mauro Sznelwar <sznelwar@uol.com.br> wrote: Por que não estou conseguindo rodar?
dados <- read.table("data_test.txt", header=T, sep= "\t")
dados$p_valor <- apply(dados[,2:4], 1, function(linha) prop.test(x=c(linha[1],linha[2]),n=c(linha[3],linha[3]), correct=F)$p.value)
Error in prop.test(x = c(linha[1], linha[2]), n = c(linha[3], linha[3]), : elements of 'x' must not be greater than those of 'n'
dados
AREA X1 X2 N 1 1 1982 9416 11398 2 2 6546 4084 10630 3 3 3418 667 4085 4 4 1503 4408 5911 5 5 966 339 305
Como sugestão para um código mais enxuto, o objetivo poderia ser atingido com a aplicação da função apply:
dados <- read.table("data_test.txt", header=T, sep= "\t")
dados$p_valor <- apply(dados[,2:4], 1, function(linha) prop.test(x=c(linha[1],linha[2]),n=c(linha[3],linha[3]), correct=F)$p.value)
dados
AREA X1 X2 N p_valor 1 1 1982 9416 11398 0,000000e+00 2 2 6546 4084 10630 5,362948e-250 3 3 3418 667 40850 0,000000e+00 4 4 1503 4408 59110 0,000000e+00 5 5 966 339 30500 6,472911e-69 Ademais, se o OP tiver que resolver problemas dessa natureza com frequência, pode ser que valha a pena examinar alguns pacotes que têm funções para facilitar esse tipo de resumos, como, por exemplo, os pacotes descr e reporttools. HTH -- Cesar Rabak On Wed, Mar 23, 2016 at 1:46 PM, Daniel Tiezzi < <mailto:dtiezzi@usp.br> dtiezzi@usp.br> wrote: Boa tarde Wagner Supondo que seus dados esteja uma tabela data_test (em anexo) acho que você pode resolver assim data<- read.table(“data_test.txt”, header=T, sep= “\t”) data_df <- as.data.frame(data) res<- list() for (i in 1:nrow(data)) { y<- prop.test(x = c(data$X1[i], data$X2[i]), n = c(data$N[i], data$N[i]), correct = FALSE) x= y$p.value res[[paste0(i)]] <- x } result <- t(as.data.frame(res)) data_df1 <- cbind(data_df, result) data_df1 Espero que funcione daniel Daniel Tiezzi, MD, PhD Professor Associado Departamento de Ginecologia e Obstetrícia Setor de Mastologia e Oncologia Ginecológica Faculdade de Medicina de Ribeirão Preto - USP Tel.: 16 3602-2488 e-mail: <mailto:dtiezzi@fmrp.usp.br> dtiezzi@fmrp.usp.br On Mar 23, 2016, at 3:50 PM, Wagner Tassinari < <mailto:wtassinari@gmail.com> wtassinari@gmail.com> wrote: AREA X1 X2 N p_valor 1 1982 9416 11398 ? 2 6546 4084 10630 ? 3 3418 667 4085 ? 4 1503 4408 5911 ? 5 966 339 305 ? _____ <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> Imagem removida pelo remetente. Avast logo Este email foi escaneado pelo Avast antivírus. <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> www.avast.com _______________________________________________ R-br mailing list <mailto:R-br@listas.c3sl.ufpr.br> R-br@listas.c3sl.ufpr.br <https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem ( <http://www.leg.ufpr.br/r-br-guia> http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível. --- Este email foi escaneado pelo Avast antivírus. https://www.avast.com/antivirus