【发布时间】:2016-10-17 06:29:46
【问题描述】:
我正在尝试创建一个函数,该函数将在我已格式化为向量的特定窗口内返回特定相邻核苷酸(彼此相邻的 CG)的计数。
我希望窗口的长度为 100 个核苷酸,并且每 10 个核苷酸移动一次。
数据是这样设置的(到 10k 个条目):
data <- c("a", "g", "t", "t", "g", "t", "t", "a", "g", "t", "c", "t",
"a", "c", "g", "t", "g", "g", "a", "c", "c", "g", "a", "c")
到目前为止,我已经尝试过:
library(zoo)
library(seqinr)
rollapply(data, width=100, by=10, FUN=count(data, wordsize=2))
但我总是得到错误
"Error in match.fun(FUN) :
'count(data, 2)' is not a function, character or symbol"
我也试过了:
starts <- seq(1, length(data)-100, by = 100)
n <- length(starts)
for (i in 1:n){
chunk <- data[starts[i]:(starts[i]+99)]
chunkCG <- count(chunk,wordsize=2)
print (chunkCG)
}
但是,我不知道如何保存返回的数据。这种方法也不允许我重叠帧。
【问题讨论】:
-
count(data,wordsize=2)不是函数。你可能需要FUN=function(x) count(x, wordsize=2)。或者甚至可能是...,FUN=count, wordsize=2)用于您的rollapply电话。 -
您想要第 1:100、101:200 等行的“cg”对数?
标签: r dna-sequence sliding-window