subset lists based on a condition in r -


i have data frame looks like:

df = read.table(text="s00001    s00002  s00003  s00004  s00005  s00006   gg  aa  gg  aa  gg  ag   cc  tt  tt  tc  tc  tt   tt  cc  cc  tt  tt  tt   aa  aa  gg  aa  ag  aa   tt  cc  cc  tt  tc  tt   gg  gg  gg  aa  gg  gg", header=t, stringsasfactors=f) 

i count number of character strings same letters (i.e. "aa", "cc", "gg", or "tt") each row. did use table() function count elements , generated list based on if names of lists "homo". tried subset lists didn't work. here scripts:

a <- apply(df,1, function(x) table(x)) b <- apply(df,1, function(x) (names(table(x)) %in% c("aa","cc","gg","tt"))) a[b] ## didn't work 

i expect data frame generated:

2 3 1 3 2 4 4 1 2 3 1 5 

appreciate helps.

we single apply

t(apply(df, 1, function(x) {tbl <- table(x)         tbl[names(tbl) %in% c("aa", "cc", "gg", "tt")]})) #      [,1] [,2] #[1,]    2    3 #[2,]    1    3 #[3,]    2    4 #[4,]    4    1 #[5,]    2    3 #[6,]    1    5 

Comments

Popular posts from this blog

Capture and play voice with Asterisk ARI -

java - Why database contraints in HSQLDB are only checked during a commit when using transactions in Hibernate? -

visual studio - Installing Packages through Nuget - "Central Directory corrupt" -