【发布时间】:2021-09-26 02:18:12
【问题描述】:
我一直在玩一些 for 循环和函数,但我不能完全让它们工作。我生成了四列随机数,每列有 300 行,并将它们收集到一个数据框中。
numbers <- runif(300, min = 0, max = 250)
numbers <- as.data.frame(numbers)
numbers$numbers2 <- runif(300, min = 0, max = 300)
numbers$numbers3 <- runif(300, min = 0, max = 350)
numbers$numbers4 <- runif(300, min = 0, max = 400)
numbers <- as.data.frame(numbers)
然后我创建了一个函数来计算每列中数字的 z 分数:
newfunction <- function(x){
x_stand <- (x-mean(x))/sd(x)
return(x_stand)
}
我想在 for 循环中实现该函数并计算所有四列的 z 分数,但是当我尝试运行以下代码时收到一条错误消息:
for (i in numbers[,1:4]) {
z_scores[i] <- newfunction(numbers[,i])
}
错误消息显示:[.data.frame`(numbers, , i) : undefined columns selected
我只想使用 for 循环计算“数字”数据框中每个变量/列的 z 分数,并将这些计算插入一个名为 z_scores 的数据框中,这样最终的 z_scores 数据框包含四个新列每个都包含对应于“数字”数据框中第 i 列的 z 分数。
谁能告诉我需要修复什么才能让我的 for 循环正常工作?
谢谢
【问题讨论】:
-
尝试使用
(i in 1:4),但您将遇到另一个问题,因为您没有提前创建z_scores数据框。您可以在循环之前执行z_scores <- numbers以快速解决此问题。 -
为什么不直接使用
numbers.z <- scale(numbers)? -
我只是在玩函数和 for 循环来自学:) 我尝试创建一个分配给数字的 z_scores 数据框并将 for 循环更改为 for (i in 1:4) .. . 总的来说,它现在看起来如下: z_scores
-
@Ben 非常感谢,它工作得很好! :)
标签: r dataframe function for-loop undefined