代码之家  ›  专栏  ›  技术社区  ›  neuron

在群集上运行时R脚本出错。脚本在笔记本电脑上运行良好

  •  0
  • neuron  · 技术社区  · 6 年前

    所以我不知道为什么会发生这种情况,我尝试了不同版本的R来看看这个版本是否有错误。我的一个功能有问题。

    replacement<-function(x){
      x=replace(x,which(x=='0/3'),0)
      x=replace(x,which(x=='1/3'),1)
      x=replace(x,which(x=='2/3'),1)
      x=replace(x,which(x=='3/3'),2)
      x=replace(x,which(x=='./.'),0) 
      x=replace(x,which(x=='0/0'),0)
      x=replace(x,which(x=='0/1'), 1)
      x=replace(x,which(x=='1/2'),1)
      x=replace(x,which(x=='1/1'),2)
      x=replace(x,which(x=='2/2'),2)
      x=replace(x,which(x=='0/2'),0)
    }
    

    我认为这个功能不应该有任何问题。看起来相当直截了当。我的脚本需要比笔记本电脑多一点的内存,所以我在大学的集群(3.5.0版)上运行它。当我试图在我的数据上运行这个函数时,它开始出现故障。我做了一个较小的数据集来查看问题是什么,这就是正在发生的事情。我不知道为什么我的功能搞砸了?有人知道发生了什么事吗?是吗?

    > replacement<-function(x){
    +   x=replace(x,which(x=='0/3'),0)
    +   x=replace(x,which(x=='1/3'),1)
    +   x=replace(x,which(x=='2/3'),1)
    +   x=replace(x,which(x=='3/3'),2)
    +   x=replace(x,which(x=='./.'),0) 
    +   x=replace(x,which(x=='0/0'),0)
    +   x=replace(x,which(x=='0/1'), 1)
    +   x=replace(x,which(x=='1/
    +   x=replace(x,
    +   x=replace(x,
    +   x=replace(x,which(x=='
    + }
    Error: unexpected '}' in:
    "  x=replace(x,which(x=='
    }"
    

    我也在3.4.2版上尝试过这个版本,并且有同样的问题。

    1 回复  |  直到 6 年前
        1
  •  1
  •   MHammer    6 年前

    我不知道您得到了什么错误,因为我可以运行您的函数而不出现任何错误。您可以通过组合具有相同赋值的逻辑测试来简化代码:

    x1 <- c('0/3' , '1/3' , '2/3' , '3/3' , './.' , '0/0' , '0/1' , '1/2' , '1/1' , '2/2' , '0/2')
    
    replacement<-function(x){
      x=replace(x,which(x=='0/3'),0)
      x=replace(x,which(x=='1/3'),1)
      x=replace(x,which(x=='2/3'),1)
      x=replace(x,which(x=='3/3'),2)
      x=replace(x,which(x=='./.'),0) 
      x=replace(x,which(x=='0/0'),0)
      x=replace(x,which(x=='0/1'),1)
      x=replace(x,which(x=='1/2'),1)
      x=replace(x,which(x=='1/1'),2)
      x=replace(x,which(x=='2/2'),2)
      x=replace(x,which(x=='0/2'),0)
      x
    }
    
    replacement_2<-function(x){
      x[x %in% c('0/3', './.', '0/0', '0/2')] <- 0
      x[x %in% c('1/3', '2/3', '0/1', '1/2')] <- 1
      x[x %in% c('3/3', '1/1', '2/2'       )] <- 2
      x
    }
    
    replacement(x1) 
    # [1] "0" "1" "1" "2" "0" "0" "1" "1" "2" "2" "0"
    replacement_2(x1)
    # [1] "0" "1" "1" "2" "0" "0" "1" "1" "2" "2" "0"