我想要求用户输入整数值列表。 用户可以输入单个值或一堆多个值,如1 2 3(spcae或逗号分隔) 然后使用输入的数据进行进一步计算。
我正在使用以下代码
EXP <- as.integer(readline("enter the experiment numbers (You can include multiple number of experiments with space seperate) \n"))
这里有或没有整数,无论我在EXP中存储什么值,我都无法在进一步的编程中使用它们。如下所示
gg2 <- subset((aggregate(cbind(var)~En+Mn+hours,a, FUN=mean)),(aggregate(cbind(var)~En+Mn+hours,a, FUN=mean))$En == c(EXP))
上述命令因条件$ En == c(EXP)而失败,因为通过readline输入的值不起作用。
我该怎么办?
2)上述问题与整数有关。 在字符作为输入的情况下,相同的解决方案不起作用。就像下面一样
prompt1 <- "enter the variable_name \n"
var <- as.character((readline(prompt1))[[1]])
如果我输入Ph作为提示,那么var将存储为&#34; Ph&#34;,这个值我不能在命令行中使用
gg2 <- subset((aggregate(cbind(var)~En+Mn+hours,a, FUN=mean)),(aggregate(cbind(var)~En+Mn+hours,a, FUN=mean))$En == c(EXP))
它会抛出错误,例如,可变长度不同(找到&#39; En&#39;) 但如果我用像Ph这样的实际值替换var,那么它将正常工作。
数据集已在此处上传... Dataset a&lt; - 数据集导入
Consider names(a) = c("Ei","Mi","hours","Nphy","Cphy","CHLphy","Nhet","Chet","Ndet","Cdet","DON","DOC","DIN","DIC","AT","dCCHO","TEPC","Ncocco","Ccocco","CHLcocco","PICcocco","par","Temp","Sal","co2atm","u10","dicfl","co2ppm","co2mol","pH")
我这样做
v1 <- quote(var1 <- as.numeric(readline('Enter a number from 1 to 15: ')))
eval(v1)
v2 <- quote(var2 <- as.numeric(readline('Enter a number from 1 to 15: ')))
eval(v2)
variable1 <- as.name(names(a[var1]))
variable2 <- as.name(names(a[var2]))
gg4 <- subset((aggregate(cbind(variable1,variable2)~Ei+Mi+hours,a, FUN=mean)))
读取用户输入,然后在命令中使用用户输入来聚合所需数据。上面的命令使用变量1和变量2,因此它不起作用,并且它的抛出错误。 如果我用像Nphy,Cphy这样的实际列名替换variable1和variable2,那么一切都运行良好。
like this gg4 <- subset((aggregate(cbind(Nphy,Cphy)~Ei+Mi+hours,a, FUN=mean)))
所以我想知道如何让用户输入在命令行中工作?
答案 0 :(得分:3)
第一部分应该是:
prompt <- "enter the experiment numbers (space-separated list) \n"
EXP <- as.integer(strsplit(readline(prompt), " ")[[1]])
第二部分更加模糊(你能解释一下你的数据是什么样的以及你想做什么吗?)但也许你正在寻找这样的东西:
sub.a <- subset(a, En %in% EXP)
aggregate(var~En+Mn+hours, sub.a, FUN=mean)
我没有看到ggplot2
的链接。如果没有,请删除任何提及。
答案 1 :(得分:0)
您可以尝试scan()
。这是一个示例:
> x <- scan()
1: 4
2: 6
3: 10
4: 11
5:
Read 4 items
> x
[1] 4 6 10 11