Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不能在while循环中使用data.entry更改数据?_R - Fatal编程技术网

为什么不能在while循环中使用data.entry更改数据?

为什么不能在while循环中使用data.entry更改数据?,r,R,当我用scan输入3 4 100,并在data.entry中更改它时,但更改的数据不会分配到游戏中,为什么 正如@r2evans所说,我将我的代码修复为以下代码,问题解决了 change<-function(){ play <- scan(what="character") numbers<-c("1","3","4","9","10") while(! all(is.element(play,numbers))){ data.entry(play) }} change(

当我用scan输入3 4 100,并在data.entry中更改它时,但更改的数据不会分配到游戏中,为什么

正如@r2evans所说,我将我的代码修复为以下代码,问题解决了

change<-function(){
play <- scan(what="character")
numbers<-c("1","3","4","9","10")
while(! all(is.element(play,numbers))){
   data.entry(play)
}}
change()
这仍然不是一个好的技术,当我将代码放入程序中时,returnplay之后的代码将永远不会执行

我将其修改为:

change<-function(){
play <- scan(what="character")
numbers<-c("1","3","4","9","10")
while(! all(is.element(play,numbers))){
   data.entry(play)
   return(play)
}}
change()
我不熟悉data.entry,但它对我来说似乎很好。如果您提供data.entry,我们可能能够提供一些见解。缺少这一点,功能一般不应该依赖于副作用,所以游戏是通过价值而不是参照来传递的。这意味着在函数内部对其进行的任何更改都是函数的本地更改,如果未返回并捕获,则会丢失。
change<-function(){
play <- scan(what="character")
numbers<-c("1","3","4","9","10")
while(! all(is.element(play,numbers))){
   play <- fix(play)
}}
change()