如何解决如何在字符向量列表上使用seqinr :: computePI 数据
这就是输入数据的样子(代表样本)。
sample1 MAQSVNIQDQYLNQ
sample2 MAADRAQNLQDTFLNHV
sample3 MAERSQNLQ
我正在尝试使用computePI()
库中的seqinr
函数在第二列上执行计算。为此,我需要将第二列中的字符串转换为单个字符的向量,并将其用作computePI()
的输入。为此,我尝试使用strsplit()
。它适用于单个字符串:
library(seqinr)
str <- c("MAQSVNIQDQYLNQ")
unlist(strsplit(str,split = ""))
#R> [1] "M" "A" "Q" "S" "V" "N" "I" "Q" "D" "Q" "Y" "L" "N" "Q"
其次:
computePI(unlist(strsplit(str,split = "")))
#R> [1] 3.799404
将使用read.csv
读取的输入数据保存到变量后:
data <- read.csv("filename",header = FALSE,sep = "\t")
我尝试了以下操作:
computePI(unlist(strsplit(data$V2,split = "")))
但是出现一个错误,告诉我输入不是字符串。我该如何解决?
解决方法
您可以使用sapply
:
sapply(strsplit(data$V2,split = ""),seqinr::computePI)
,
您可以使用Vectorize
:
library(seqinr)
VcomputePI <- Vectorize(computePI)
VcomputePI(strsplit(dat$V2,split = ""))
#R> [1] 3.799404 5.194135 5.753213
或者像Ronak Shah所示的sapply
/ lapply
/ vapply
。 vapply
可能是最快的:
vapply(strsplit(dat$V2,computePI,0.)
#R> [1] 3.799404 5.194135 5.753213
数据
dat <- data.frame(
V1 = paste0("sample",1:3),V2 = c("MAQSVNIQDQYLNQ","MAADRAQNLQDTFLNHV","MAERSQNLQ"),stringsAsFactors = FALSE)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。