
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> 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
On Mar 23, 2016, at 3:50 PM, Wagner Tassinari <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 ?
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.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) e forneça código mínimo reproduzível.