2301_82106252 2024-01-21 19:36 采纳率: 0%
浏览 230
已结题

missing value where TRUE/FALSE needed

用R跑如下代码:

for (j in 1:nrow(df2)) {
start_point <- df2$Start[j]
end_point <- df2$End[j]
gene_symbol <- df2$Gene[j]

if (!any(is.na(c(start_point, end_point, gene_symbol))) && 
    !any(is.na(c(data_point, start_point, end_point))) &&
    start_point <= end_point) {

  if (!is.na(data_point) && data_point >= start_point && data_point <= end_point) {
    match_result <- c(Data = data_point, Start = start_point, End = end_point, Gene = gene_symbol)
    data_matches[[length(data_matches) + 1]] <- match_result
  }
}

程序报错:
Error in if (!is.na(data_point) && data_point >= start_point && data_point <= :
missing value where TRUE/FALSE needed

请教各位,这代码应该怎么改动?

  • 写回答

9条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-01-24 11:30
    关注

    引自免费微信小程序:皆我百晓生

    根据您提供的代码和错误提示,您遇到了"missing value where TRUE/FALSE needed"的错误。这个错误通常在条件判断语句中使用了缺失值时出现。

    在您的代码中,错误可能出现在以下两行:

    if (!is.na(data_point) && data_point >= start_point && data_point <= end_point) {
        match_result <- c(Data = data_point, Start = start_point, End = end_point, Gene = gene_symbol)
    

    错误出现的原因是data_point可能包含缺失值,导致条件判断不成立。为了解决这个问题,您可以添加缺失值判断条件,修改代码如下:

    if (!is.na(data_point) && !any(is.na(c(data_point, start_point, end_point))) && data_point >= start_point && data_point <= end_point) {
        match_result <- c(Data = data_point, Start = start_point, End = end_point, Gene = gene_symbol)
    

    改动后的代码会在判断data_point是否为缺失值前,先判断start_pointend_point是否包含缺失值。只有当这三个值都不是缺失值时,才会进行条件判断并执行相应的操作。

    希望这个解答能够帮到您!如果您还有其他问题,请随时提问。

    评论

报告相同问题?

问题事件

  • 系统已结题 2月1日
  • 赞助了问题酬金15元 1月24日
  • 创建了问题 1月21日