对于使用“ i”包含多个值的循环

时间:2018-07-10 17:28:17

标签: r

我正在尝试编写一个if循环,该循环在扫描后获取条形码编号,并将值0.5添加到数据集中的一列。我有一个if循环的硬编码版本的样本(值1表示条形码“ 4041”是数据框中的第一个条形码值):

df <- read.csv('Data.csv')
tool <- as.integer(readline(prompt="Enter a Barcode: "))
if (tool == 4041){
df$TIMES.USED[1] <- df$TIMES.USED[1] + 0.5 
} else {
print('Please Scan Again')
}

我的数据框如下:

  Barcode.Number    Type.Equipment Manufacture Times.Used
            4041        Flashlight    Surefire          0
            4680           Capstan       Honda          0
            4682 Deep Cut Band Saw   Milwaukee          0

我试图运行一个for循环,该循环将使用任何条形码编号,一旦输入,将0.5添加到Times.Used列中。我一直在尝试使用值“ i”,但是我只是想不通。值“ i”表示相对于行i(其使用时间列将被更新)输入的变化的条形码编号。

就预期的输出而言,我只需要一个输入语句和一个仅更改数据集中的值的输出,不需要将任何内容直接输出到控制台。

任何帮助将不胜感激。 谢谢!

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

tool <- as.integer(readline(prompt="Enter a Barcode: "))
# check if tool is in the the data
if (! tool %in% df$Barcode.Number) {
  # if not, tell user
  message("Barcode not found.")
} else {
  # if so, update data
  df[df$Barcode.Number == tool, "Times.Used"] = df[df$Barcode.Number == tool, "Times.Used"] + 0.5
}

运行此代码并在提示符下输入“ 4041”,这是打印df

的结果
> df
  Barcode.Number    Type.Equipment Manufacture Times.Used
1           4041        Flashlight    Surefire        0.5
2           4680           Capstan       Honda        0.0
3           4682 Deep_Cut_Band_Saw   Milwaukee        0.0

使用此输入数据:

df = read.table(text = "Barcode.Number    Type.Equipment Manufacture Times.Used
            4041        Flashlight    Surefire          0
            4680           Capstan       Honda          0
            4682 Deep_Cut_Band_Saw   Milwaukee          0", header = TRUE)