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]])