R 如何将数据帧/TIBLE转换为命名的向量列表
我有以下数据框:R 如何将数据帧/TIBLE转换为命名的向量列表,r,tidyverse,R,Tidyverse,我有以下数据框: 库(tidyverse) dat#A tible:2 x 2 #>序列名称肽 #> #>1肽组1.r1 KSKLRHGC #>2肽组2.r1 AAYVNQF 我要做的是将它们转换为向量列表: $Peptide_set1.r1 [1] “K”“S”“K”“L”“R”“H”“G”“C” $2.r1 [1]“A”“A”“Y”“V”“Y”“V”“N”“Q”“F” 我该怎么做呢?我们可以使用strsplit在每个字符处拆分字符串,并使用setnam
库(tidyverse)
dat#A tible:2 x 2
#>序列名称肽
#>
#>1肽组1.r1 KSKLRHGC
#>2肽组2.r1 AAYVNQF
我要做的是将它们转换为向量列表:
$Peptide_set1.r1
[1] “K”“S”“K”“L”“R”“H”“G”“C”
$2.r1
[1]“A”“A”“Y”“V”“Y”“V”“N”“Q”“F”
我该怎么做呢?我们可以使用
strsplit
在每个字符处拆分字符串,并使用setnames
setNames(strsplit(dat$peptide, ""), dat$seq_name)
#$Peptide_set1.r1
#[1] "K" "S" "K" "L" "R" "H" "G" "C"
#$Peptide_set2.r1
#[1] "A" "A" "Y" "V" "Y" "V" "N" "Q" "F"
要使用列索引而不是名称,我们可以使用
pull
将列值转换为向量,因为这是一个TIBLE
library(dplyr)
setNames(strsplit(pull(dat[2]), ""), pull(dat[1]))
#$Peptide_set1.r1
#[1] "K" "S" "K" "L" "R" "H" "G" "C"
#$Peptide_set2.r1
#[1] "A" "A" "Y" "V" "Y" "V" "N" "Q" "F"
我们还可以将它们完全添加到
dplyr
链操作中
library(tidyverse)
dat1 <- dat %>% mutate(new = setNames(strsplit(pull(dat[2]), ""), pull(dat[1])))
dat1$new
#$Peptide_set1.r1
#[1] "K" "S" "K" "L" "R" "H" "G" "C"
#$Peptide_set2.r1
#[1] "A" "A" "Y" "V" "Y" "V" "N" "Q" "F"
@RonakShah谢谢。但不完全是。我需要命名列表。@RonakShah不。名称应该取自'seq谢谢。我如何修改您的代码,使其采用列索引而不是名称,例如,而不是
dat$peptide
或dat$seq_name
。我尝试了这个方法,但失败了setNames(strsplit(as.list(dat[1]),“”),dat[2])setNames(strsplit(dat[[2]],”),dat[[1]])
也很有效,因为[
是从列表中提取的R原语操作,而tbl
仍然在所有这些层下。pull
应该替换[
所以语法实际上应该是pull(dat,2)
否则,您将调用[
然后[[
@我忘记的最近一封邮件[[
,也感谢您对拉取的解释。:)
setNames(strsplit(dat[[2]], ""), dat[[1]])