gpt4 book ai didi

r - 根据数据框中的值创建句子

转载 作者:行者123 更新时间:2023-12-02 09:17:15 26 4
gpt4 key购买 nike

我想根据数据框中的值创建一个句子。我有以下数据框:

canada <- c(50, 50, 50)
korea <- c(70, 70, 70)
brazil <- c(100, 100, 100)
fruit <- rbind(canada, korea, brazil)
colnames(fruit) <- c("apple", "orange", "banana")

fruit
> apple orange banana
> canada 50 50 50
> korea 70 70 70
> brazil 100 100 100

当我输入加拿大时,希望输出如下所示:

canada
Canada consumes average number of apples, average number of oranges,
and average number of bananas.

所以,我尝试了以下方法:

average <- 'average number of '
if(fruit$'apple' > 90)
{
cat("Canada",
average, fruit$'apple',
average, fruit$'orange',
"and ", average, fruit$'banana'
)
}

当然,这不起作用,我被困在这里了。有人可以引导我走上正确的道路吗?我会努力学习的!

最佳答案

这是我的尝试,假设您可能有除苹果/橙色/香蕉之外的列,但您始终希望给定行中的所有值。

myfun <- function(val){
val <- tolower(val) # assuming all row names are in lower case
myrow <- fruit[val,]

phrase <- sapply(seq_along(myrow),
function(x, n, i) {paste0("consumes average ", x[i], " of ", n[i], "s")}, # "s" added assuming there's always a plural number of fruits
x=myrow, n=names(myrow))
phrase[length(phrase)] <- paste0("and ", phrase[length(phrase)], ".")
phrase <- paste(phrase, collapse = ", ")

cat(tools::toTitleCase(val), phrase)
}

> myfun("KOREA")
Korea consumes average 70 of apples, consumes average 70 of oranges, and consumes average 70 of bananas.
> myfun("canada")
Canada consumes average 50 of apples, consumes average 50 of oranges, and consumes average 50 of bananas.
> myfun("braZIL")
Brazil consumes average 100 of apples, consumes average 100 of oranges, and consumes average 100 of bananas.

关于r - 根据数据框中的值创建句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45746866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com