This can also be solved using reshape2's melt and dcast operations. With this approach, melt transforms the data to "long" format first, and then the values are dcast-ed with the same operation, paste(..., collapse = ","):
library(reshape2)
x <- read.table(
stringsAsFactors = FALSE,
header = TRUE,
na.strings = "",
text = " SNP hu_mRNA gene
chr1.111642529 NM_002107 H3F3A
chr1.111642529 NM_005324 H3F3B
chr1.111801684 BC098118
chr1.111925084 NM_020435 GJC2
chr1.11801605 AK027740
chr1.11801605 NM_032849 C13orf33
chr1.151220354 NM_018913 PCDHGA10
chr1.151220354 NM_018918 PCDHGA5")
(xm <-melt(x, id.vars = "SNP", na.rm = TRUE))
## SNP variable value
## 1 chr1.111642529 hu_mRNA NM_002107
## 2 chr1.111642529 hu_mRNA NM_005324
## 3 chr1.111801684 hu_mRNA BC098118
## 4 chr1.111925084 hu_mRNA NM_020435
## 5 chr1.11801605 hu_mRNA AK027740
## 6 chr1.11801605 hu_mRNA NM_032849
## 7 chr1.151220354 hu_mRNA NM_018913
## 8 chr1.151220354 hu_mRNA NM_018918
## 9 chr1.111642529 gene H3F3A
## 10 chr1.111642529 gene H3F3B
## 12 chr1.111925084 gene GJC2
## 14 chr1.11801605 gene C13orf33
## 15 chr1.151220354 gene PCDHGA10
## 16 chr1.151220354 gene PCDHGA5
(xc <- dcast(xm, SNP~variable, fun.aggregate = paste, collapse = ","))
## SNP hu_mRNA gene
## 1 chr1.111642529 NM_002107,NM_005324 H3F3A,H3F3B
## 2 chr1.111801684 BC098118
## 3 chr1.111925084 NM_020435 GJC2
## 4 chr1.11801605 AK027740,NM_032849 C13orf33
## 5 chr1.151220354 NM_018913,NM_018918 PCDHGA10,PCDHGA5