【发布时间】:2020-06-22 04:15:47
【问题描述】:
所以我知道双括号仅返回元素,而单括号返回包含该元素的列表。 但是,在创建函数或 for 循环时,这在功能上有何影响?
假设我有一组 X 和 Y 值,并想为它们找到最佳斜率和 y 相交。我有一个 x 和 y 值列表(存储在 data1 中)和一个 yintersect 和斜率值列表(存储在 parameters 中)。
我想看看哪一组 y 相交和斜率值最接近实际 Y 值。因此,首先我将创建一个函数,它在给定参数列表中的一组 yintersect 和斜率值的情况下输出 y 值。该函数如下所示,标题为 modelling_function
parameters <- list(yintersect = c(1:10), slope = c(5:14))
data1 <- list(x = sample(100, 10), y = sample(200:10))
modelling_function <- function(parameters, data1) {
parameters[[1]]+ parameters[[2]] * data1$x}
那么两个问题...
- 这里使用单括号和双括号有什么区别?
- 为什么当我运行这个函数时我只能得到 10 个值?我希望得到 10 * 10 = 100 个值,因为对于每个 x 值,有 10 种斜率和相交组合可供使用。
我知道我在这里遗漏了一些东西,我认为与每个向量/列表的具体操作有关。我希望括号和知道对每个子集列表所做的工作将帮助我弄清楚这一点。
【问题讨论】:
-
试试看:用一个括号,
Error in parameters[2] * data1$x : non-numeric argument to binary operator。这是因为parameters[2]是一个列表,而不是一个数字向量。 -
对于您的 data1 和参数,您将获得长度为 10 的向量,因为 parameters$yintersect 和 parameters$slope 的长度为 10,而 data1$x 的长度为 10