我在这里发现了与此类似的问题: Count the number of words in a string in R? 在这里 使用 R 更快地分割字符串和计数字符的方法? 但我无法在我的示例中工作。我有一个相当大的数据框。其中一列具有特征的基因组位置,并且条目的格式如下:
[hg19:2:224840068-224840089:-]
[hg19:17:37092945-37092969:-]
[hg19:20:3904018-3904040:+]
[hg19:16:67000244-67000248,67000628-67000647:+]
我将这些元素拆分为单独的元素以获得以下内容(即,第一个条目):
hg19 2 224840068 224840089 -
但在第四个条目的情况下,我想将其粘贴到两个单独的位置。IE
hg19:16:67000244-67000248,67000628-67000647:+]
变成
hg19 16 67000244 67000248 +
hg19 16 67000628 67000647 +
(相邻列中的所有相关数据均从原始数据中填写)
我确定哪些行需要此操作的一种简单方法是简单地计算带有逗号“,”的行,因为它们不会出现在任何其他列的任何其他文本中,除非该特征有多个基因组位置。但是,我在第一个障碍中失败了,因为 sapply 命令错误地为每个条目返回“1”。
testdat$multiple <- sapply(gregexpr(",", testdat$genome_coordinates), length)
(或者)
testdat$multiple <- sapply(gregexpr("\\,", testdat$genome_coordinates), length)
table(testdat$multiple)
1
4
使用我上面发布的示例,我希望输出为
testdat$multiple
0
0
0
1
实际上在做
grep -c
在命令行中的相同数据上显示我有 10 个包含“,”的条目。
使用我上面发布的示例,我希望输出为
所以最初我想让这个工作,但我也有点难以理解如何提取两个(或更多)位置并将它们放在自己的行上,填充相邻的数据。实际上我的意图是坚持我知道的东西(在命令行上)用','out grepping行,复制文件并拆分和awk选定的列(各个文件中的第一个和第二个位置)然后cat和sort他们。如果我在 R 中有更好的方法来做到这一点,那么我会喜欢一个指针。