R中的多个值并将其存储在列表中

R中的多个值并将其存储在列表中,r,console,user-input,R,Console,User Input,我想从控制台获取用户输入。 工资、公司名单和工作清单 我可以从控制台中获取公司和工作的单个值作为角色,但是如何获取多个值并将其存储在变量中以供进一步分析?我需要存储和访问这些值 代码: 班级宣言############ setClass(Class=“User”, 代表( salary=“numeric”, company=“character”, jobtitle=“字符” )) ###############函数声明########## myFunction这就是你想要的吗 请注意: (1)

我想从控制台获取用户输入。 工资、公司名单和工作清单

我可以从控制台中获取公司和工作的单个值作为角色,但是如何获取多个值并将其存储在变量中以供进一步分析?我需要存储和访问这些值

代码:

班级宣言############
setClass(Class=“User”,
代表(
salary=“numeric”,
company=“character”,
jobtitle=“字符”
))
###############函数声明##########
myFunction这就是你想要的吗

请注意:

(1) 在if语句中使用相同而不是
=
<代码>?“==”

(2) 我不认为您可以从命令行以交互方式作为脚本轻松运行它。如果有人知道如何将此R脚本作为shell命令,请发布为注释

(3) 您可以使用
dput
write
命令将结果存储到静态文件中供以后使用

# result variable is an array used to store user input
# remove result variable from the environment
if(exists("result")){remove(result)}
while(identical(flag_continue <- readline("continue?:"), "y")){
    aUser <- myFunction()
    if(!exists("result")){
      result <- c(aUser)
    } else {
      result <- c(aUser, result)
    }    
}
# now all the user typed info has been stored inside a list called "result"
此外,您还可以转换嵌套列表类…等等<代码>结果将对象放入数据帧:

convertUser <- function(result){ 
  data.frame(
    salary = unlist(lapply(result, FUN=function(x){attr(x, "salary")})),
    company = unlist(lapply(result, FUN=function(x){attr(x, "company")})),
    jobtitle = unlist(lapply(result, FUN=function(x){attr(x, "jobtitle")}))
  )
}
df <- convertUser(result)

不清楚预期的输出。我能够使用同一个函数存储多个值。例如,当我输入
Salary?25、32和
aUser@salary#[1] 25 32
您所说的解决方案适用于数值,但不适用于字符类型值。它显示整个字符串。您必须
拆分该字符串,类似于
sal
continue?:y
Salary?1
Company?com1
Job Title?job1
continue?:y
Salary?2
Company?com2
Job Title?job2
continue?:n
> str(result)
List of 2
$ :Formal class 'User' [package ".GlobalEnv"] with 3 slots
.. ..@ salary  : num 2
.. ..@ company : chr "com2"
.. ..@ jobtitle: chr "job2"
$ :Formal class 'User' [package ".GlobalEnv"] with 3 slots
.. ..@ salary  : num 1
.. ..@ company : chr "com1"
.. ..@ jobtitle: chr "job1"
convertUser <- function(result){ 
  data.frame(
    salary = unlist(lapply(result, FUN=function(x){attr(x, "salary")})),
    company = unlist(lapply(result, FUN=function(x){attr(x, "company")})),
    jobtitle = unlist(lapply(result, FUN=function(x){attr(x, "jobtitle")}))
  )
}
df <- convertUser(result)
> convertUser(result)
salary company jobtitle
1      3    com2     job3
2      2    com2     job2
3      1    com1     job1