如果R中的其他(V>=80,“Above_Average”,“Average”)在最后2个输出之间打印额外的空格

e0bqpujr  于 2023-02-10  发布在  其他
关注(0)|答案(5)|浏览(76)

我在R中做了一个简单的编程练习,我必须-检查作为参数传递的向量V的每个值,如果分数大于或等于80,则打印Above_Average;如果分数小于80,则打印Average(在一行中)。
我是这么做的

conditional <- function(V)
{
ifelse(V>=80,"Above_Average","Average")
}
conditional(c(90,80,85,70,95))

输出:-

[1] "Above_Average" "Above_Average" "Above_Average" "Average"       "Above_Average"

我担心的是最后两个输出之间的额外空间。你知道为什么我会得到额外的空间吗?解决这个问题的方法是什么?

zfciruhq

zfciruhq1#

取代:

ifelse(V>=80,"Above_Average","Average")

use:

cat(ifelse(V>=80,"Above_Average","Average"))

这就行了!

例如:

conditional <- function(V)
{
  W <- ifelse(V>=80,paste("Above_Average_Marks"), paste("Average"))
  cat(W)
}

conditional(c(90,80,85,70,95))
#> Above_Average_Marks Above_Average_Marks Above_Average_Marks Average Above_Average_Marks
bvuwiixz

bvuwiixz2#

这将删除多余的空间:

conditional <- function(V)
{
    x <- if_else(V>=80,"Above_Average", "Average")
    paste(x, collapse= ' ')
}

conditional(c(90,80,85,70,95))
[1] "Above_Average Above_Average Above_Average Average Above_Average"
beq87vna

beq87vna3#

我想我明白了。
我认为当你有一个向量返回Above_AverageAverage时,它会根据较大字符串的长度来分隔所有元素,即Above_Average

conditional(c(90,80,85,70,95))

你得到

[1] "Above_Average" "Above_Average" "Above_Average" "Average"       "Above_Average"

如果您将Above_Average更改为Above_Average_Marks,我们将获得更大的空间。

conditional <- function(V)
{
  ifelse(V>=80,paste("Above_Average_Marks"), paste("Average"))
}
conditional(c(99, 90,80,85,70,95, 100))

[1] "Above_Average_Marks" "Above_Average_Marks" "Above_Average_Marks" "Above_Average_Marks" "Average"             "Above_Average_Marks" "Above_Average_Marks"
uyto3xhc

uyto3xhc4#

这些不是空格,只是长度对齐.

zlwx9yxi

zlwx9yxi5#

这可能有用。

conditional <- function(V) 
{
  
    for (i in V){
        if(i>=80){
            cat("Above_Average ")
            }
        else{ 
            cat("Average ")
            }
    }
}

conditional(c(78,85,90))

相关问题