2017-08-29 32 views
0

下面這是我有:創建一個句子,如果最低分是其列平均

canada <- c(90, 50, 90) 
korea <- c(60, 30, 90) 
iran <- c(40, 20, 40) 
fruit <- rbind(canada, korea, iran) 
colnames(fruit) <- c("apple", "banana", "orange") 

price <- function(val){ 
    val <- tolower(val) # assuming all row names are in lower case 
    myrow <- fruit[val,] 
    nation <- tools::toTitleCase(val) 

    name.max <- names(myrow)[which.max(c(myrow))] 
    name.min <- names(myrow)[which.min(c(myrow))] 
    score.max <- c(myrow)[which.max(c(myrow))] 
    score.min <- c(myrow)[which.min(c(myrow))] 

    range <- c(paste0(nation, " has cheap fruit, ", score.min, " cents for one ", name.min, ".")) 
    cat(range) 
} 

> price("iran") 
Iran has cheap fruit, 20 cents for banana. 

腳本使用which.min以提供選定行的細胞具有最低的分數。

加拿大最便宜的水果是香蕉,價格爲50美分,但仍高於平均水平。我想從計算機打印內容只有香蕉的價格是高於平均水平,產生這樣的句子:

> price("canada") 
Canada's cheapest fruit is banana, but it is still more expensive than the average. 

我總是可以手動輸入列平均和使用操作的跡象,但我希望如果有將是我可以融入到我目前擁有的功能。

+1

那麼什麼是這樣嗎?你輸入國家,你得到的輸出是最便宜的水果和價格。 –

+0

感謝您花時間閱讀我的問題。最便宜的水果是香蕉,但價格仍高於平均水平。我希望計算機只在香蕉價格高於平均水平時纔打印。 –

回答

1

這樣的事情?

canada <- c(90, 50, 90) 
korea <- c(60, 30, 90) 
iran <- c(40, 20, 40) 
fruit <- rbind(canada, korea, iran) 
colnames(fruit) <- c("apple", "banana", "orange") 

price <- function(val){ 
    val <- tolower(val) # assuming all row names are in lower case 
    myrow <- fruit[val,] 
    nation <- tools::toTitleCase(val) 

    name.min <- names(myrow)[which.min(c(myrow))] 
    score.min <- c(myrow)[which.min(c(myrow))] 

    if (score.min < mean(fruit[, name.min])) { 
    cat(paste0(nation, "'s cheapest fruit is ", name.min, 
       ", and it is cheaper than the average.")) 
    } else { 
    cat(paste0(nation, "'s cheapest fruit is ", name.min, 
       ", but it is still more expensive than the average.")) 
    } 
} 
> price("iran") 
Iran's cheapest fruit is banana, and it is cheaper than the average. 
> price("canada") 
Canada's cheapest fruit is banana, but it is still more expensive than the average. 
+0

這會做!一個簡單的問題。在score.min

+1

因爲實際得分需要與每個分數進行比較並且可能有多個匹配項,例如,如果score.min是90,那麼應該選擇哪一個列? – Axeman

+0

我不得不考慮它,我的大腦現在仍然試圖消化所有這些,但是,謝謝太多了,這個答案會幫助我們讓這個世界變得更加安全;我沒有把它用於水果價格:) –

相關問題