【问题标题】:Error creating a list of key values pairs in R在 R 中创建键值对列表时出错
【发布时间】:2014-10-30 18:46:11
【问题描述】:

我正在尝试创建一个配对值列表,如下所示:

> prot_keys<-snp.ids_mrna
> prot_vals<-seq.aa
> mylist<-list()
> mylist[[ prot_keys ]] <- prot_vals

地点:

> dput(seq.aa)
c("MYSFNTLRLYLWETIVFFSLAASKEAEAARSAPKPMSPSDFLDKLMGRTSGYDARIRPNFKGPPVNVSCNIFINSFGSIAETTMDYRVNIFLRQQWNDPRLAYNEYPDDSLDLDPSMLDSIWKPDLFFANEKGAHFHEITTDNKLLRISRNGNVLYSIRITLTLACPMDLKNFPMDVQTCIMQLESFGYTMNDLIFEWQEQGAVQVADGLTLPQFILKEEKDLRYCTKHYNTGKFTCIEARFHLERQMGYYLIQMYIPSLLIVILSWISFWINMDAAPARVGLGITTVLTMTTQSSGSRASLPKVSYVKAIDIWMAVCLLFVFSALLEYAAVNFVSRQHKELLRFRRKRRHHKSPMLNLFQEDEAGEGRFNFSAYGMGPACLQAKDGISVKGANNSNTTNPPPAPSKSPEEMRKLFIQRAKKIDKISRIGFPMAFLIFNMFYWIIYKIVRREDVHNQ", 
"MYSFNTLRLYLWETIVFFSLAASKEAEAARSAPKPMSPSDFLDKLMGRTSGYDARIRPNFKGPPVNVSCNIFINSFGSIAETTMDYRVNIFLRQQWNDPRLAYNEYPDDSLDLDPSMLDSIWKPDLFFANEKGAHFHEITTDNKLLRISRNGNVLYSIRITLTLACPMDLKNFPMDVQTCIMQLESFGYTMNDLIFEWQEQGAVQVADGLTLPQFILKEEKDLRYCTKHYNTGKFTCIEARFHLERQMGYYLIQMYIPSLLIVILSWISFWINMDAAPARVGLGITTVLTMTTQSSGSRASLPKGPV", 
"MDYRVNIFLRQQWNDPRLAYNEYPDDSLDLDPSMLDSIWKPDLFFANEKGAHFHEITTDNKLLRISRNGNVLYSIRITLTLACPMDLKNFPMDVQTCIMQLESFGYTMNDLIFEWQEQGAVQVADGLTLPQFILKEEKDLRYCTKHYNTGKFTCIEARFHLERQMGYYLIQMYIPSLLIVILSWISFWINMDAAPARVGLGITTVLTMTTQSSGSRASLPKVSYVKAIDIWMAVCLLFVFSALLEYAAVNFVSRQHKELLRFRRKRRHHKEDEAGEGRFNFSAYGMGPACLQAKDGISVKGANNSNTTNPPPAPSKSPEEMRKLFIQRAKKIDKISRIGFPMAFLIFNMFYWIIYKIVRREDVHNQ", 
"MYSFNTLRLYLWETIVFFSLAASKEAEAARSAPKPMSPSDFLDKLMGRTSGYDARIRPNFKGPPVNVSCNIFINSFGSIAETTMDYRVNIFLRQQWNDPRLAYNEYPDDSLDLDPSMLDSIWKPDLFFANEKGAHFHEITTDNKLLRISRNGNVLYSIRITLTLACPMDLKNFPMDVQTCIMQLESFGYTMNDLIFEWQEQGAVQVADGLTLPQFILKEEKDLRYCTKHYNTGKFTCIEARFHLERQMGYYLIQMYIPSLLIVILSWISFWINMDAAPARVGLGITTVLTMTTQSSGSRASLPKVSYVKAIDIWMAVCLLFVFSALLEYAAVNFVSRQHKELLRFRRKRRHHKEDEAGEGRFNFSAYGMGPACLQAKDGISVKGANNSNTTNPPPAPSKSPEEMRKLFIQRAKKIDKISRIGFPMAFLIFNMFYWIIYKIVRREDVHNQ"
)
> dput(snp.ids_mrna)
c("NM_001146040", "XM_005268412", "NM_001292000", "NM_000171"
)

两个对象都是“字符”类型。

我收到的错误消息:

> mylist[[ prot_keys ]] <- prot_vals
Error in `[[<-`(`*tmp*`, prot_keys, value = c("MYSFNTLRLYLWETIVFFSLAASKEAEAARSAPKPMSPSDFLDKLMGRTSGYDARIRPNFKGPPVNVSCNIFINSFGSIAETTMDYRVNIFLRQQWNDPRLAYNEYPDDSLDLDPSMLDSIWKPDLFFANEKGAHFHEITTDNKLLRISRNGNVLYSIRITLTLACPMDLKNFPMDVQTCIMQLESFGYTMNDLIFEWQEQGAVQVADGLTLPQFILKEEKDLRYCTKHYNTGKFTCIEARFHLERQMGYYLIQMYIPSLLIVILSWISFWINMDAAPARVGLGITTVLTMTTQSSGSRASLPKVSYVKAIDIWMAVCLLFVFSALLEYAAVNFVSRQHKELLRFRRKRRHHKSPMLNLFQEDEAGEGRFNFSAYGMGPACLQAKDGISVKGANNSNTTNPPPAPSKSPEEMRKLFIQRAKKIDKISRIGFPMAFLIFNMFYWIIYKIVRREDVHNQ",  : 
  no such index at level 1

但我不明白这个错误消息告诉我什么。有人可以帮忙吗?

【问题讨论】:

    标签: r list keyvaluepair


    【解决方案1】:

    我认为 R 中的字典/键值对不会像向量那样工作。以下代码有效,但绝对不是很好。不过,我还没有找到使用lapply 的方法。

    for (i in 1:length(prot_keys)){
      mylist[[prot_keys[i]]]=prot_vals[i]
    }
    

    【讨论】:

    • 好的,所以只看结果 - 我如何访问密钥?我可以通过执行 mylist[i][[1]] 来访问该值。但是我需要能够访问每个元素的键
    • 要按值访问键,您可以使用此函数:names(mylist[which(mylist=="GFPMAFLIFNMFYWIIYKIVRREDVHNQ[...]")])。要访问第一个键(或循环),请使用:names(mylist[1])
    • 好的,谢谢,太好了。我实际上在“GFPMAF ....”中为 mylist[1][[1]] 替换以获取第一个元素。它产生了相同的结果
    猜你喜欢
    • 2012-03-30
    • 1970-01-01
    • 2013-08-27
    • 2020-01-10
    • 1970-01-01
    • 2015-07-16
    • 2019-02-24
    • 2017-07-04
    • 1970-01-01
    相关资源
    最近更新 更多