Ошибка в сценарии R при запуске в кластере. Скрипт отлично работает на ноутбуке - PullRequest
0 голосов
/ 01 июля 2018

Так что я не уверен, почему это происходит, и я пробовал разные версии 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 голосов
/ 02 июля 2018

Я не знаю, какую ошибку вы получили, так как я смог запустить вашу функцию без ошибок. Вы можете немного упростить свой код, комбинируя логические тесты с одинаковым значением присваивания:

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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...