我正在尝试编写一个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(其使用时间列将被更新)输入的变化的条形码编号。
就预期的输出而言,我只需要一个输入语句和一个仅更改数据集中的值的输出,不需要将任何内容直接输出到控制台。
任何帮助将不胜感激。 谢谢!
答案 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)