Hello All,

I have a toy dataframe like this. It has 8 columns separated by tab.

Name    SampleID        Al1     Al2     X       Y       R       Th
rs191191        A1      A       B       0.999   0.09    0.78    0.090
abc928291       A1      B       J       0.3838  0.3839  0.028   0.888
abcnab  A1      H       K       0.3939  0.939   0.3939  0.77
rx82922 B1      J       K       0.3838  0.393   0.393   0.00
rcn3939 B1      M       O       0.000   0.000   0.000   0.77
tcn39399        B1      P       I       0.393   0.393   0.393   0.56

Note that the SampleID is repeating. So I want to be able to split the dataset based on the SampleID and write the splitted dataset of every SampleID into a new file.
I tried split followed by lapply to do this.

infile <- read.csv("test.txt", sep="\t", as.is = TRUE, header = TRUE)
infile.split  <- split(infile, infile$SampleID)
names(infile.split[1])  ## outputs “A1”
## now A1, B1 are two lists in infile.split as I understand it. Correct me if I am wrong.

lapply(infile.split,function(x){
              filename <- names(x) #### here I expect to see A1 or B1, I didn’t, I tried (names(x)[1]) and that gave me “Name” and not A1 or B1.
              final_filename <- paste(filename,”toy_set.txt”,sep=”_”)
              write.table(x, file = paste(path, final_filename,sep=”/”, row.names=FALSE, quote=FALSE,sep=”\t”)
  } )

In lapply I wanted to give a unique filename to all the split Sample Ids, i.e. name them here as A1_toy_set.txt, B1_toy_set_txt.
How do I get those names, i.e. A1, B1 to a create a filename like above.
When I write each of the element in the list obtained after split into a file, the column names would have names like A1.Name, A1.SampleID, A1.Al1, ….. Can I get rid of “A1” in the column names within the lapply (other than reading in the file again and changing the names) ?

Thanks for your time,

Regards
Sashi


	[[alternative HTML version deleted]]

