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