gpt4 book ai didi

r - 将值添加到 R 中 for 循环内的向量

转载 作者:行者123 更新时间:2023-12-03 23:31:37 24 4
gpt4 key购买 nike

我刚刚开始学习 R,我写了这段代码来学习函数和循环。

squared<-function(x){
m<-c()
for(i in 1:x){
y<-i*i
c(m,y)
}
return (m)
}
squared(5)

NULL

为什么这会返回 NULL。我要 i*i要附加到 m 末尾的值并返回一个向量。有人可以指出这段代码有什么问题吗?

最佳答案

你没有在里面放任何东西m <- c()在您的循环中,因为您没有使用作业。你得到以下——

m <- c()
m
# NULL

您可以通过分配 m 来更改函数以返回所需的值。在循环。
squared <- function(x) {
m <- c()
for(i in 1:x) {
y <- i * i
m <- c(m, y)
}
return(m)
}

squared(5)
# [1] 1 4 9 16 25

但这是低效的,因为我们知道结果向量的长度将为 5(或 x)。所以我们想在循环之前先分配内存。这将是使用 for() 的更好方法环形。
squared <- function(x) {
m <- vector("integer", x)
for(i in seq_len(x)) {
m[i] <- i * i
}
m
}

squared(5)
# [1] 1 4 9 16 25

另请注意,我已删除 return()从第二个功能。那里没有必要,因此可以将其删除。在这种情况下离开它是个人偏好的问题。有时它是必要的,例如 if()例如声明。

我知道问题是关于循环的,但我还必须提到,使用原始 ^ 使用七个字符可以更有效地完成此操作。 , 像这样
(1:5)^2
# [1] 1 4 9 16 25
^是一个原始函数,这意味着代码完全用 C 编写,并且将是这三种方法中最有效的
`^`
# function (e1, e2) .Primitive("^")

关于r - 将值添加到 R 中 for 循环内的向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32366694/

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