在群集上运行时,R脚本中的错误。脚本可以在笔记本电脑上正常工作

时间:2018-07-01 14:55:30

标签: r function

所以我不确定为什么会这样,并且我尝试了不同版本的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 个答案:

答案 0 :(得分:1)

我不知道您遇到了什么错误,因为我能够毫无错误地运行您的函数。通过组合具有相同赋值的逻辑测试,可以大大简化代码:

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"