所以我不确定为什么会这样,并且我尝试了不同版本的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版上尝试过此问题,并且存在相同的问题。
答案 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"