在R中接受多个用户输入

时间:2018-07-18 19:01:38

标签: r

我正在创建一个程序,用于跟踪R中仓库周围的工具。这是我到目前为止所拥有的:

Assembly.LoadFrom

附带一些示例数据:

tool <- readline(prompt='Enter a Barcode: ')
if (! tool %in% df$Barcode.Number) {
message("Barcodes not found.")
} else {
initials <- readline(prompt='Enter your Initials: ')
job <- readline(prompt='Enter job number: ')
suppressMessages(library(dplyr))
message("Good to Go!")
df[df$Barcode.Number == tool, "DATE"]  = as.character(Sys.Date())
df[df$Barcode.Number == tool, 'Initial'] = initials
df[df$Barcode.Number == tool, 'Job.Number'] = job
df1 <- df %>% filter(df$Barcode.Number == tool) %>% 
select(Type.Equipment, Location)
print(df1)
df[df$Barcode.Number == tool, "Usage"] = df[df$Barcode.Number == 
tool, "Usage"] + 0.5
df$Status <- ifelse((df$Usage %% 1) , 'Out', 'In')
}

如您所见,它接受一个工具参数,以及一个初始和工作号输入,并根据用户输入更新日期,工作号,Times.Used和Initial列。我在为变量工具输入多个值时遇到了麻烦。目前一次只能输入一个数字,对于希望在相同的姓名缩写和工作下签出多个不同项目的人来说,这不一定实用。这个问题可能很简单,但是我如何才能为工具接受多个不同的输入数字,并使它仍然能够同时更新两个工具的数据框。我尝试了以下方法:

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

这会将我输入的工具另存为不同的编号,但不会更新所保存编号的框架。我是R的新手,因此非常感谢您的帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

首先使用:<-,如果您要存储的变量不是<=

<=是一个逻辑运算符,它检查是否小于或等于另一个值。

但是无论如何,您的问题是含糊的。但是,如果要用逗号分隔值,则可以用read.table sep=","

number <- readline(prompt='Enter a Number: ')
values = read.table(text = number,sep=",")

因此values将是一个包含您的值的数据框。 在您的示例所需输出中,您甚至不需要执行以下操作:

number <- readline(prompt='Enter a Number: ')
print(paste("Your numbers are",number), quote=FALSE)

答案 1 :(得分:0)

您可以使用scan获得所需的值。然后cat将其打印出来

number <- readline(prompt='Enter a Number: ')
cat("Your Numbers are:",scan(text=number,quiet=TRUE,sep=","))

考虑到这一点,您可以将两者放在函数格式中:

getnumbers = function(){
  number <- readline(prompt='Enter the Numbers: ')
  numbers <-scan(text=number,quiet=TRUE,sep=",")
  cat("Your Numbers are:",numbers)
  invisible(numbers)
 }
getnumbers()
Enter the Numbers: 1,2,3,4,5,6,7,13,43
Your Numbers are: 1 2 3 4 5 6 7 13 43

或者如果您要保存数字,则可以执行以下操作:

saved =getnumbers()
Enter the Numbers: 1,2,3,4
Your Numbers are: 1 2 3 4
saved
[1] 1 2 3 4