【问题标题】:Concatenating Rows or columns of a dataframe连接数据框的行或列
【发布时间】:2020-08-11 12:02:22
【问题描述】:

使用 R:

我取了多串字母:

Orig1 - ABCDE

Orig2 - FGHIJ

Orig3 - KLMNO

我使用strsplit 拆分这些字母串:

Orig1 - A B C D E

Orig2 - F G H I J

Orig3 - K L M N O

然后我将每个字母放在数据框中自己的行和列中。每个字符串在其自己的行中,每个后续字母在其自己的列中:

RowName   V1 V2 V3 V4 V5

Orig1     A  B  C  D  E

Orig2     F  G  H  I  J

Orig3     K  L  M  N  O

根据对这些字母串的各种分析,我对这些字母串进行了操作,得出了多个更改的字符串:

RowName   V1 V2 V3 V4 V5

Altered1  A  G  H  N  E

Altered2  F  B  C  I  O

Altered3  K  L  M  D  J

我不知道如何将更改后的字符串从数据框中折叠回来。我需要将其转换为可导出的 .fasta 文件,并将行名作为后续序列名。

粘贴在数据框中不起作用,因此我尝试使用来自另一个线程的一些类似主题的代码:

ldf = lapply(as.list(1:dim(df)[1]), function(x) df[x[1],])

这会将每个都放入自己的列表中,然后我可以使用粘贴,但我发现尝试导出的输出令人费解。

任何帮助将不胜感激。

【问题讨论】:

    标签: r string concatenation paste


    【解决方案1】:

    我不确定你是否想要这个

    > do.call(paste,c(df[-1],sep = ""))
    [1] "AGHNE" "FBCIO" "KLMDJ"
    

    数据

    df <- structure(list(RowName = c("Altered1", "Altered2", "Altered3"
    ), V1 = c("A", "F", "K"), V2 = c("G", "B", "L"), V3 = c("H", 
    "C", "M"), V4 = c("N", "I", "D"), V5 = c("E", "O", "J")), class = "data.frame", row.names = c(NA, 
    -3L))
    
    > df
       RowName V1 V2 V3 V4 V5
    1 Altered1  A  G  H  N  E
    2 Altered2  F  B  C  I  O
    3 Altered3  K  L  M  D  J
    

    【讨论】:

    • 谢谢。这给了我一个可以使用的列表。我从来没有完全掌握do.call。它似乎是一个可以解决很多问题的包罗万象的东西。我将不得不更多地阅读它。
    【解决方案2】:

    如果我们想要逐行的pasteoing

    library(dplyr)
    library(stringr)
    reduce(select(df, -1), str_c, sep="")
    #[1] "AGHNE" "FBCIO" "KLMDJ"
    

    数据

    df <- structure(list(RowName = c("Altered1", "Altered2", "Altered3"
    ), V1 = c("A", "F", "K"), V2 = c("G", "B", "L"), V3 = c("H", 
    "C", "M"), V4 = c("N", "I", "D"), V5 = c("E", "O", "J")),
    class = "data.frame", row.names = c(NA, 
    -3L))
    

    【讨论】:

    • 由于某种原因,我无法让 select 命令在 dplyr 中运行。 R 是最新的和一切。同上。还是要感谢您的回复。
    • @IanHauffe select 是一个可以来自不同包的函数。我使用了来自dplyrselect。如果您已经加载了其他包,它可能会被屏蔽。所以,你指定purrr::reduce(dplyr::select(df, -1), str_c, sep="")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 2011-09-12
    • 2020-04-08
    • 2021-02-09
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多