Die angegebenen Daten sindWie konvertiert man die Werte in einem Datenrahmen durch die levels() -Funktion in Dummy-Werte?
SNP1 <- c("AA","GG","AG")
SNP2 <- c("AA","CC","AC")
SNP3 <- c("GG","AA","AG")
df<- data.frame(SNP1, SNP2, SNP3)
colnames(df)<- c('rs10000438', 'rs10000500','rs1000055')
I eine Datenfunktion definieren, die dominant_dummy
ist. Wenn ich die Codes durchführe, habe ich festgestellt, dass es falsch läuft.
Error in if (!check) { : argument is of length zero
Wenn ich debuggen fand ich, dass das Argument x
in dieser ist ein dataframe
, und ich brauche levels(x)
die Funktion zu verwenden, um das Niveau von x zu überprüfen und auch levels(x)<- c(0,1,1)
, die levels
Funktion Rückkehr null
zuweisen. Mein Zweck ist es, die Werte im Datenrahmen df
basierend auf den Bedingungen zu Dummy-Werten zu konvertieren.
SNP_lib<- NCBI_snp_query(names(x))
NCBI_snp_query(names(x))
SNP_min<- SNP_lib$Minor
SNP_name<- SNP_lib$Query
SNP_min ="A"
SNPs <- x
check<-substr(levels(SNPs)[2],1,1)==SNP_min
Ich brauche die Dummy-Werte auf diese dataframe
wie levels(x)<- c(0,1,1)
zuweisen. Wie kann ich das machen?
library(rsnps)
dominant_dummy<- function(x){
SNP_lib<- NCBI_snp_query(names(x))
NCBI_snp_query(names(x))
SNP_min<- SNP_lib$Minor
SNP_name<- SNP_lib$Query
SNP_min ="A"
SNPs <- x
check<-substr(levels(SNPs)[2],1,1)==SNP_min
if(!check){
levels(SNPs)<-c(0,1,1)
SNPs<-as.numeric(as.character(SNP))
}else {levels(SNPs)<-c(1,1,0)
SNPs<-as.numeric(as.character(SNP))}
}
df_3levels<-sapply(1:ncol(df), function(i) dominant_dummy(df[,i, drop=FALSE]))
Ja, ich fand auch, dass, obwohl ich die Ebenen von 'x' auf diese Weise bekommen kann, ich noch' c (0,1,1) 'auf' Ebenen (SNPs) 'zuweisen muss, so dass es ist immer noch problematisch. Hast du eine Idee, das zu lösen? – user5802211
Ich weiß nicht, was du machen willst ... Die Level werden in diesem Moment anders benannt. Wenn Sie sie mit 'c (0,1,1) überschreiben, macht das keinen Sinn. Also sei bitte genauer mit deiner Frage. – drmariod
Also habe ich meine Frage neu geschrieben und meinen ursprünglichen Zweck angegeben. Könntest du es dir ansehen? Danke vielmals. – user5802211