【发布时间】:2014-06-22 15:05:02
【问题描述】:
我有一个 data.table 包含一个列 DT$Locale
具有以下条目:
DT[,unique(Locale)]
downstream upstream intergenic intron intron,nc regulatory synonymous
non_coding_exon,nc 5_prime_UTR splice,5_prime_UTR splice,intron missense 3_prime_UTR splice,intron,nc
splice,synonymous splice_donor synonymous,NMD mature_miRNA splice_donor,nc splice_acceptor 3_prime_UTR,NMD
stop_gained missense,NMD 5_prime_UTR,NMD intron,NMD splice,intron,NMD splice,non_coding_exon,nc missense,splice
splice_acceptor,nc coding_sequence,NMD missense,splice,NMD stop_lost initiator_codon splice_acceptor,NMD
我还有另外两列,格式如下:
DT[,unique(Cohort)]
[1] CEU Lupus RA YRI RALoci
DT[,unique(Locus)]
[1] 1.110927656.111927656 1.194335780.195335780 1.217775877.218775877 1.236880267.237880267 1.85471701.86471701 10.52963302.53963302 10.6118896.7118896
[8] 10.74879027.75879027 11.20046869.21046869 12.37676238.38676238 12.38077040.39077040 13.92438484.93438484 14.47539055.48539055 14.89244697.90244697
[15] 14.98090299.99090299 14.98556636.99556636 15.101213744.102213744 15.47426024.48426024 16.13885034.14885034 16.27399400.28399400 16.48056833.49056833
[22] 16.5898498.6898498 16.63172805.64172805 16.76469520.77469520 16.86513832.87513832 17.4148334.5148334 18.4824309.5824309 18.54958827.55958827
[29] 2.146859650.147859650 2.229978358.230978358 2.86605444.87605444 20.19570642.20570642 22.39592645.40592645 3.41789975.42789975 3.7782962.8782962
[36] 3.85190848.86190848 4.141037599.142037599 4.29959034.30959034 5.128060465.129060465 5.65898794.66898794 5.7513893.8513893 6.56405042.57405042
[43] 7.124946062.125946062 8.18012618.19012618 9.28933416.29933416 9.87628311.88628311
对于DT$Cohort 和DT$Locus 的每个组合,我希望计算DT$Locale 中每个条目的类型。
在我看来,libary data.table 代表了一种有效的方法,所以我尝试了类似的方法:
DT[,sum(unique(Locale)),by="Locus,Cohort"],但是这会返回一个错误 - 在我看来,使用 lapply 可能有一种简单的方法可以做到这一点,但我还没有找到正确的语法,有人可以提供解决方案吗?
注意:在回复帖子时:
RALociDT[,list(count=length(unique(Locale3))),by="Locus,Cohort"]
Locus Cohort count
1: 1.110927656.111927656 CEU 14
2: 1.110927656.111927656 Lupus 15
3: 1.110927656.111927656 RA 14
4: 1.110927656.111927656 YRI 13
5: 1.194335780.195335780 CEU 4
---
180: 9.28933416.29933416 YRI 4
181: 9.87628311.88628311 CEU 11
182: 9.87628311.88628311 Lupus 10
183: 9.87628311.88628311 RA 9
184: 9.87628311.88628311 YRI 11
返回列表中出现的项目数,而不是每个项目出现的次数(按 Locus 和 Cohort)。
【问题讨论】:
-
@David Arenburg - 感谢您帮助我进行编辑。你能帮我理解你做了什么以及为什么我不会再犯同样的错误吗?
-
最好显示错误消息并使用
dput发布实际数据集。但我的猜测是,错误是因为你不能求和唯一性,因为它是character类型向量,而不是数字。试试DT[,length(unique(Locale)),by="Locus,Cohort"]可能吗? -
我建议不要描述您的数据是什么样子,而是想出一个可重现的小示例,并为该示例提供所需的输出。这样一来,您将获得更好的回应,并且还可以减少当您说的话对您和其他人的含义不同时发生的误传。
标签: r data.table lapply