r - 为什么 R 请求额外的 TRUE/FALSE
问题描述
我正在尝试计算随机生成的 DNA 链中 ATG 密码子的数量并创建直方图:
s1 = makeDNA(500)
count = 0
n = 100
totCount = vector("numeric", n)
for(j in 1:n){
s1 = makeDNA(500)
count = 0
for(i in 1:500){
if(s1[i] == "A" & s1[i+1] == "T" & s1[i+2] == "G"){
count = count + 1
}
}
totCount[j] = count
}
当我运行此代码时,R 给出以下错误:
Show in New WindowClear OutputExpand/Collapse Output
Error in if (s1[i] == "A" & s1[i + 1] == "T" & s1[i + 2] == "G") { :
missing value where TRUE/FALSE needed
解决方案
问题出在这段代码中:
for(i in 1:500){
if(s1[i] == "A" & s1[i+1] == "T" & s1[i+2] == "G"){
count = count + 1
}
什么时候i == 499
,那么i + 2 == 501
。该对象s1
只有 500 个元素长。没有第 501 个元素,所以 R 返回NA
。没有什么是等于NA
, 甚至NA
, 所以你的逻辑运算符返回NA
, 当 a TRUE
orFALSE
被期望时。修改为以下,你应该是好的。
for(i in 1:498){
if(s1[i] == "A" & s1[i+1] == "T" & s1[i+2] == "G"){
count = count + 1
}
推荐阅读
- bash - 如何修改作为参数传递给wapper(如回调)的函数中的全局变量值?
- php - 如何拆分此数组对象?
- ruby-on-rails - 如何在 1 次调用中在 Rails 中查找和更新或创建对象?
- jsp - Java 6 中的转义
- flask - 预览时烧瓶不显示表格内容
- mysql - 计算mysql中的连续数字,gruped
- sql-server - 使用 group by 查找所有记录的总和
- android - setOnClickListener 不工作 android kotlin
- sql - Access sql查询连接匹配有两个匹配的连接行
- php - 获取请求中的 Laravel 键值对