gpt4 book ai didi

r - 字符串作为R中的函数参数

转载 作者:行者123 更新时间:2023-12-03 21:23:20 26 4
gpt4 key购买 nike

数据框 chocolates列出糖果的类型和对每种糖果的一组评级:

ID          sweetness   filling   crash
snickers 0.67 0.55 0.40
milky_way 0.81 0.53 0.56
...

我正在编写一个函数,它接受文件名的参数、特定类型糖果的 ID 以及我感兴趣的分数( sweetnessfillingcrash )并返回某个分数对于该文件中的某种糖果。例如,如果我想要 sweetness评级为 ID “士力架”(就像下面的语法)...
> chocolates$sweetness[chocolates$ID=="snickers"]
[1] 0.67

...一些函数 candyranks(data=, ID=, score=)应该返回相同的值。这是我写的:
candyranks <- function(data, id, score){
data$score[chocolates$ID=="snickers"]
}

但是 candyranks(data=chocolates, ID = "snickers", score = sweetness)返回值 NULL .我已经确定 ID是一个字符向量。关于为什么它不会返回值 0.67 的任何想法?

最佳答案

这是一个工作示例:

首先让我们定义一个可重现的数据框:

chocolate <- data.frame(ID = c("snickers", "milky_way"),
sweetness = c(0.67, 0.81),
filling = c(0.55, 0.55),
crash = c(0.40, 0.56))

现在我们要确保我们的所有参数不被视为列名,而是对象调用。我们还想在适当的时候使用我们的函数参数来给函数更多的灵活性:
candyranks <- function(data, id, score){
data[[score]][data$ID==id]
}

在这个例子中,它更灵活一些,因为它不需要一个数据集被称为 chocolate .给我们以下内容:
candyranks(data = chocolate, id = "snickers", score = "sweetness")
[1] 0.67

替代 dplyr方法:

虽然基地 R非常适合这种情况,我知道有些人更喜欢 dplyr语法来逐行查看正在发生的事情。对于此数据集,以下内容应与上述完全相同,但使用 tidyverse台词:
candyranks <- function(data, id, score){
require(dplyr)
data %>%
filter(ID == id) %>%
pull(score)
}

关于r - 字符串作为R中的函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50932478/

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