【问题标题】:How to analyse each individual vector value in an if statement如何在 if 语句中分析每个单独的向量值
【发布时间】:2017-02-17 16:46:18
【问题描述】:

我正在尝试使用 if 语句来分析大于或等于 70 的用户输入值的数量。对于他们输入的每个大于(或等于)70 的值,我希望变量 totalFirst 到增加 1。但是,我不确定如何使 if 语句分析向量中的每个单独的值。

到目前为止的代码:

totalFirst <- 0

prompt <- "What were your second year module results?(space separated)"
secondYearMark <- as.integer(strsplit(readline(prompt), " ")[[1]])
if (secondYearMark >= 70) totalFirst <- totalFirst + 1

【问题讨论】:

  • 可能是totalFirst &lt;- totalFirst + sum(secondYearMark &gt;= 70)?或者如果您只需要计算一次并且以后不再增加,那么只需totalFirst &lt;- sum(secondYearMark &gt;= 70)

标签: r if-statement vector user-input


【解决方案1】:

最简单的方法是使用sum

prompt <- "What were your second year module results?(space separated)"
secondYearMark <- as.integer(strsplit(readline(prompt), " ")[[1]])
totalFirst <- sum(secondYearMark >= 70)

【讨论】:

  • 谢谢,一个非常简单的解决方案!
【解决方案2】:

为了多次获取用户输入,您可以将 readline 放入名为 f_getInput 的函数中,然后调用该函数:

totalFirst <- integer(0)    
prompt <- "What were your second year module results?(space separated)"
f_getInput <- function(prompt) return(as.integer(strsplit(readline(prompt), " ")[[1]]))

totalFirst <- c(totalFirst, f_getInput(prompt))

您可以根据需要多次运行最后一行。最后,您将拥有向量totalFirst 中的所有用户输入。为了捕捉用户输入数字&gt;=70 的次数,只需执行以下操作:

sum(totalFirst >= 70)

例如,如果totalFirst 包含25, 33, 85, 64, 71, 70,则执行以下操作:

which(totalFirst >= 70) 

你知道在第 3 次、第 5 次和第 6 次输入时输入了一个数字 &gt;=70

【讨论】:

    【解决方案3】:
    totalFirst     <- 0    
    prompt         <- "What were your second year module results?(space separated)"
    secondYearMark <- as.integer(strsplit(readline(prompt), " ")[[1]])   
    totalFirst     <- length(secondYearMark[secondYearMark >=70])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多