如何在字符向量列表上使用 seqinr::computePI
How to use seqinr::computePI on a list of character vectors
这是输入数据的样子(代表性样本)。
sample1 MAQSVNIQDQYLNQ
sample2 MAADRAQNLQDTFLNHV
sample3 MAERSQNLQ
我正在尝试使用 seqinr
库中的 computePI()
函数对第二列执行计算。为此,我需要将第二列中的字符串转换为单个字符的向量,并将其用作 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
或 sapply
/lapply
/vapply
,如 所示。 vapply
可能是最快的:
vapply(strsplit(dat$V2, split = ""), 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)
这是输入数据的样子(代表性样本)。
sample1 MAQSVNIQDQYLNQ
sample2 MAADRAQNLQDTFLNHV
sample3 MAERSQNLQ
我正在尝试使用 seqinr
库中的 computePI()
函数对第二列执行计算。为此,我需要将第二列中的字符串转换为单个字符的向量,并将其用作 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
或 sapply
/lapply
/vapply
,如 vapply
可能是最快的:
vapply(strsplit(dat$V2, split = ""), 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)