- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我花了很多时间试图解决这个问题,但没有成功。
我有一个 data.frame,其中有一列包含可变长度的字符串。数据框看起来像这样:
Taxa <- as.character(c("cellularorganisms(norank)_Bacteria(superkingdom)_Actinobacteria(phylum)","cellularorganisms(norank)_Bacteria(superkingdom)_Proteobacteria(phylum)_Gammaproteobacteria(class)_Enterobacteriales(order)_Enterobacteriaceae(family)","cellularorganisms(norank)_Bacteria(superkingdom)_Proteobacteria(phylum)_Gammaproteobacteria(class)_Enterobacteriales(order)","cellularorganisms(norank)_Bacteria(superkingdom)_Proteobacteria(phylum)_Gammaproteobacteria(class)_Enterobacteriales(order)_Enterobacteriaceae(family)_Klebsiella(genus)","cellularorganisms(norank)_Bacteria(superkingdom)_Proteobacteria(phylum)_Gammaproteobacteria(class)_Enterobacteriales(order)_Enterobacteriaceae(family)_Klebsiella(genus)_Klebsiellapneumoniae(species)","cellularorganisms(norank)_Bacteria(superkingdom)_Firmicutes(phylum)_Clostridia(class)_Clostridiales(order)","cellularorganisms(norank)_Bacteria(superkingdom)_Firmicutes(phylum)_Clostridia(class)","cellularorganisms(norank)_Bacteria(superkingdom)_Firmicutes(phylum)_Clostridia(class)_Clostridiales(order)_Clostridiaceae(family)","cellularorganisms(norank)_Bacteria(superkingdom)_Firmicutes(phylum)_Clostridia(class)_Clostridiales(order)_Clostridiaceae(family)_Clostridium(genus)","cellularorganisms(norank)_Bacteria(superkingdom)_Firmicutes(phylum)_Clostridia(class)_Clostridiales(order)_Clostridiaceae(family)_Clostridium(genus)_Clostridiumbotulinum(species)","cellularorganisms(norank)_Bacteria(superkingdom)_Firmicutes(phylum)_Clostridia(class)_Clostridiales(order)_Clostridiaceae(family)_Clostridium(genus)_Clostridiumbotulinum(species)_ClostridiumbotulinumCDC66177(strain)","cellularorganisms(norank)_Bacteria(superkingdom)_Actinobacteria(phylum)_Actinobacteria(class)_Actinobacteridae(subclass)_Actinomycetales(order)_Micrococcineae(suborder)","cellularorganisms(norank)_Bacteria(superkingdom)_Actinobacteria(phylum)_Actinobacteria(class)_Actinobacteridae(subclass)_Actinomycetales(order)_Micrococcineae(suborder)_Microbacteriaceae(family)","cellularorganisms(norank)_Bacteria(superkingdom)_Actinobacteria(phylum)_Actinobacteria(class)_Actinobacteridae(subclass)_Actinomycetales(order)_Micrococcineae(suborder)_Microbacteriaceae(family)_Microbacterium(genus)","cellularorganisms(norank)_Bacteria(superkingdom)_Actinobacteria(phylum)_Actinobacteria(class)_Actinobacteridae(subclass)_Actinomycetales(order)_Micrococcineae(suborder)_Microbacteriaceae(family)_Microbacterium(genus)_Microbacteriumlaevaniformans(species)_MicrobacteriumlaevaniformansOR221(strain)"))
Percent <- c("0.000400","0.006800","0.005034","0.001760","0.000000","0.000000","0.344400","0.000000","0.000000","0.000000","0.006500","0.002819","0.000487","0.000000","0.001090")
Test <- data.frame(Percent, Taxa)
Test$Taxa <- as.character(Test$Taxa)
我可以将下划线上的这些字符串子集化为一个不等长的列表:
NewDF <- strsplit(Test$Taxa, "_", fixed=TRUE)
但我无法弄清楚如何获取此解析后的输出并将其格式化为可用的结构。
每个解析部分都有两个组成部分,一个描述符和一个分类级别(即 Bacteria(superkingdom) 是描述符 Bacteria 和分类级别的 super 王国。
我想要做的是获取这个解析后的输出,并填充一个具有以下列标题(norank、superkingdom、phylum、class、order、family、genus、species、strain)的 data.frame。输出需要跳过上面列表中未包含的分类级别(例如,在类和订单之间有分类级别为子类的行,我需要删除子类)。
此外,如果一行在特定分类级别停止并且仍有未填充的列,则应将它们设置为 NA(即第一行以门结束,因此类、目、科等应为 NA)。
最终输出应该是这样的:
norank superkingdom phylum class order family genus species strain
1 cellularorganisms(norank) Bacteria(superkingdom) Actinobacteria(phylum) <NA> <NA> <NA> <NA> <NA> <NA>
2 cellularorganisms(norank) Bacteria(superkingdom) Proteobacteria(phylum) Gammaproteobacteria(class) Enterobacteriales(order) Enterobacteriaceae(family) <NA> <NA> <NA>
3 cellularorganisms(norank) Bacteria(superkingdom) Proteobacteria(phylum) Gammaproteobacteria(class) Enterobacteriales(order) <NA> <NA> <NA> <NA>
4 cellularorganisms(norank) Bacteria(superkingdom) Proteobacteria(phylum) Gammaproteobacteria(class) Enterobacteriales(order) Enterobacteriaceae(family) Klebsiella(genus) <NA>
5 cellularorganisms(norank) Bacteria(superkingdom) Proteobacteria(phylum) Gammaproteobacteria(class) Enterobacteriales(order) Enterobacteriaceae(family) Klebsiella(genus) Klebsiellapneumoniae(species) <NA>
6 cellularorganisms(norank) Bacteria(superkingdom) Firmicutes(phylum) Clostridia(class) Clostridiales(order) <NA> <NA> <NA> <NA>
7 cellularorganisms(norank) Bacteria(superkingdom) Firmicutes(phylum) Clostridia(class) <NA> <NA> <NA> <NA> <NA>
8 cellularorganisms(norank) Bacteria(superkingdom) Firmicutes(phylum) Clostridia(class) Clostridiales(order) Clostridiaceae(family) <NA> <NA> <NA>
9 cellularorganisms(norank) Bacteria(superkingdom) Firmicutes(phylum) Clostridia(class) Clostridiales(order) Clostridiaceae(family) Clostridium(genus) <NA> <NA>
10 cellularorganisms(norank) Bacteria(superkingdom) Firmicutes(phylum) Clostridia(class) Clostridiales(order) Clostridiaceae(family) Clostridium(genus) Clostridiumbotulinum(species) <NA>
11 cellularorganisms(norank) Bacteria(superkingdom) Firmicutes(phylum) Clostridia(class) Clostridiales(order) Clostridiaceae(family) Clostridium(genus) Clostridiumbotulinum(species) ClostridiumbotulinumCDC66177(strain)
12 cellularorganisms(norank) Bacteria(superkingdom) Actinobacteria(phylum) Actinobacteria(class) Actinomycetales(order) <NA> <NA> <NA> <NA>
13 cellularorganisms(norank) Bacteria(superkingdom) Actinobacteria(phylum) Actinobacteria(class) Actinomycetales(order) Microbacteriaceae(family) <NA> <NA> <NA>
14 cellularorganisms(norank) Bacteria(superkingdom) Actinobacteria(phylum) Actinobacteria(class) Actinomycetales(order) Microbacteriaceae(family) Microbacterium(genus) <NA> <NA>
15 cellularorganisms(norank) Bacteria(superkingdom) Actinobacteria(phylum) Actinobacteria(class) Actinomycetales(order) Microbacteriaceae(family) Microbacterium(genus) Microbacteriumlaevaniformans(species) MicrobacteriumlaevaniformansOR221(strain)
最佳答案
您可以尝试将一系列小数据帧编译成一个 df
library(dplyr)
NewDF <-
lapply(strsplit(Test$Taxa, "_", fixed=TRUE),
function(x)
{
vars <- lapply(x, function(y)
{
m <- regexec("\\((.+?)\\)",y)
regmatches(y,m)[[1]][2]
})
vals <- as.list( x )
names(vals) <- unlist(vars)
data.frame( vals,
stringsAsFactors = FALSE )
}) %>% rbind_all
这给了我你想要的结果(也有好看的变量名)
关于r - 将字符串子集化为不均匀列表并从列表中逻辑传播 data.frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31016748/
如何使用 SPListCollection.Add(String, String, String, String, Int32, String, SPListTemplate.QuickLaunchO
我刚刚开始使用 C++ 并且对 C# 有一些经验,所以我有一些一般的编程经验。然而,似乎我马上就被击落了。我试过在谷歌上寻找,以免浪费任何人的时间,但没有结果。 int main(int argc,
这个问题已经有答案了: In Java 8 how do I transform a Map to another Map using a lambda? (8 个回答) Convert a Map>
我正在使用 node + typescript 和集成的 swagger 进行 API 调用。我 Swagger 提出以下要求 http://localhost:3033/employees/sear
我是 C++ 容器模板的新手。我收集了一些记录。每条记录都有一个唯一的名称,以及一个字段/值对列表。将按名称访问记录。字段/值对的顺序很重要。因此我设计如下: typedef string
我需要这两种方法,但j2me没有,我找到了一个replaceall();但这是 replaceall(string,string,string); 第二个方法是SringBuffer但在j2me中它没
If string is an alias of String in the .net framework为什么会发生这种情况,我应该如何解释它: type JustAString = string
我有两个列表(或字符串):一个大,另一个小。 我想检查较大的(A)是否包含小的(B)。 我的期望如下: 案例 1. B 是 A 的子集 A = [1,2,3] B = [1,2] contains(A
我有一个似乎无法解决的小问题。 这里...我有一个像这样创建的输入... var input = $(''); 如果我这样做......一切都很好 $(this).append(input); 如果我
我有以下代码片段 string[] lines = objects.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.No
这可能真的很简单,但我已经坚持了一段时间了。 我正在尝试输出一个字符串,然后输出一个带有两位小数的 double ,后跟另一个字符串,这是我的代码。 System.out.printf("成本:%.2
以下是 Cloud Firestore 列表查询中的示例之一 citiesRef.where("state", ">=", "CA").where("state", "= 字符串,我们在Stack O
我正在尝试检查一个字符串是否包含在另一个字符串中。后面的代码非常简单。我怎样才能在 jquery 中做到这一点? function deleteRow(locName, locID) { if
这个问题在这里已经有了答案: How to implement big int in C++ (14 个答案) 关闭 9 年前。 我有 2 个字符串,都只包含数字。这些数字大于 uint64_t 的
我有一个带有自定义转换器的 Dozer 映射: com.xyz.Customer com.xyz.CustomerDAO customerName
这个问题在这里已经有了答案: How do I compare strings in Java? (23 个回答) 关闭 6 年前。 我想了解字符串池的工作原理以及一个字符串等于另一个字符串的规则是
我已阅读 this问题和其他一些问题。但它们与我的问题有些无关 对于 UILabel 如果你不指定 ? 或 ! 你会得到这样的错误: @IBOutlet property has non-option
这两种方法中哪一种在理论上更快,为什么? (指向字符串的指针必须是常量。) destination[count] 和 *destination++ 之间的确切区别是什么? destination[co
This question already has answers here: Closed 11 years ago. Possible Duplicates: Is String.Format a
我有一个Stream一个文件的,现在我想将相同的单词组合成 Map这很重要,这个词在 Stream 中出现的频率. 我知道我必须使用 collect(Collectors.groupingBy(..)
我是一名优秀的程序员,十分优秀!