R:脚本中出现 while 循环不循环并退出脚本的问题

问题描述 投票:0回答:1
我编写了一个脚本,该脚本应该将 csv 文件的列重新格式化为特定格式。它包括各种“子函数”(不是实际定义的函数),用户可以根据 csv 文件中需要重新格式化的内容进行选择。子功能是:重命名列、删除列、将 2 列合并为 1 列、将 1 列拆分为 2 列以及对列重新排序。这些子功能在单独运行时都可以完美运行。

当我最初编写脚本时,它要求用户先完成所有子功能,然后才能将重新格式化的数据保存为新的 csv 文件,并且不允许用户重复子功能(例如,删除更多多于一列)。然后,我使用 while 循环重写了它,以便向用户提供子函数的编号列表,并可以选择要使用的子函数。子功能可以按任何顺序使用并重复使用任意次数。

在另一个脚本中,我使用了 while 循环来达到相同的目的,并且效果很好。但是,由于某种原因,当我运行此脚本时,while 循环无法正确循环。

这是我的脚本的精简版本,因为发布完整内容太长了:

col_opt <- c("Options:", "1. rename columns", "2. delete columns", "3. merge 2 columns", "4. split a column", "5. finish") cat(col_opt, sep = "\n") cond_col_fun <- readline("Enter option number: ") while(cond_col_fun == "1" | cond_col_fun == "one"){ # code to rename columns cat(col_opt, sep = "\n") cond_col_fun <- readline("Enter option number: ") } while(cond_col_fun == "2" | cond_col_fun == "two"){ # code to delete columns cat(col_opt, sep = "\n") cond_col_fun <- readline("Enter option number: ") } # same while loop repeats for options 3 & 4 while(cond_col_fun == "5" | cond_col_fun == "five"){ # code to reorder columns & write as new csv file break }
当我运行脚本时,我可以首先选择选项 1(重命名列),然后选择任何选项,重复任何其他选项,并完成写入新的 csv 文件。但是,如果我首先选择任何其他选项,然后尝试选择选项 1(重命名列),它只会退出脚本。在控制台中看起来像这样:

Options: 1. rename columns 2. delete columns 3. merge 2 columns 4. split a column 5. finish Enter option number: 2 # code runs to delete a column, based on user inputs Options: 1. rename columns 2. delete columns 3. merge 2 columns 4. split a column 5. finish Enter option number: 1 >
循环“while(cond_col_fun == "1" | cond_col_fun == "one")”中没有任何内容可以使其退出脚本,因为如果这是第一个子函数运行,则脚本可以完美运行。我已经把我的脚本读了几十遍,并一遍又一遍地修改它,但由于某种原因, while 循环不想正常工作。

如果有人知道为什么会发生这种情况或如何解决它,我将非常感激。我有一个更复杂的脚本,带有一个可以正常工作的多嵌套循环,所以这个有点简单的脚本让我难住了,这让我发疯。

编辑:问题已解决。添加初始 while 循环

while(cond_col_fun < 5)

 并将 while 循环更改为 if 语句修复了该问题。

r while-loop
1个回答
0
投票
有效的答案:添加一个初始 while 循环

while(cond_col_fun < 5)

 并将现有的 while 循环更改为 if 语句修复了它。

© www.soinside.com 2019 - 2024. All rights reserved.