
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 <dtiezzi@usp.br <mailto: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: dtiezzi@fmrp.usp.br <mailto:dtiezzi@fmrp.usp.br>
On Mar 23, 2016, at 3:50 PM, Wagner Tassinari <wtassinari@gmail.com <mailto: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> Este email foi escaneado pelo Avast antivírus. www.avast.com <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto: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.