Entering edit mode
23 months ago
rheab1230
▴
140
I have 49 data frames and one matrix file which has NA values initially and will be filled up based on a condition applied on the 49 data frame. The condition are's: First check if the respective gene is present in the data frame. if yes, then check the rsid if that rsid is present for that particular gene then take it weight value and add to the matrix file otherwise it should be 0
I am able to fill the matrix for individual data frame but not able to understand how to do it through loop so that I can analyse all the data frames at one go.
y <- en_Adipose_Subcutaneous$gene==genes_union[1]
z <- which(y[y])
a <- en_Adipose_Subcutaneous[z,]
weightsval <- ifelse(rownames(models_df)[1:1657598]%in% a$rsid,a$weight,0)
models_df[1:1657598,1] <- weightsval
y <- en_Adipose_Visceral_omentum$gene==genes_union[1]
z <- which(y[y])
a <- en_Adipose_Visceral_omentum[z,]
weightsval <- ifelse(colnames(models_df)[1:1657598]%in% a$rsid,a$weight,0)
models_df[1:1657598,2] <- weightsval
My data:
en_Adipose_Visceral_omentum <- data.frame(gene=c("ENSG00000107937.18","ENSG00000107937.18"),rsid=c("rs7475652","rs7918643"),varID=c("chr10_295356_T_C_b38","chr10_301812_C_T_b38"),ref_allele=c("T","C"),eff_allele=c("C","T"),weight=c(0.004,-0.00735))
dput(mod1els_df)
structure(c(NA, NA, NA, NA, NA, NA, NA, NA, NA), .Dim = c(3L,
3L), .Dimnames = list(c("rs11252127", "rs11252546", "rs11591988"
), c("en_Adipose_Subcutaneous", "en_Adipose_Visceral_Omentum",
"en_Adrenal_Gland")))
Your 49 data frames should be in a list, then you can use functions like
lapply
orpurrr::map
to iterate over all of the data frames.As rpolicastro suggested put all your dataframes into a list:
myDFs <- mget(ls(pattern = "^en_"))