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





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> 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
 
 

 

 
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       ?
 



Avast logo

Este email foi escaneado pelo Avast antivírus. 
www.avast.com


_______________________________________________
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.