English · PDF 348
(额外挑战:尽管变量名的长度不同,我用了什么函数来确保数字整齐对齐?)
trans <- list( disp = function(x) x \* 0.0163871, am = function(x) { factor(x, labels = c("auto", "manual")) } ) for (var in names(trans)) { mtcars[[var]] <- trans[[var]](mtcars[[var]]) }
在 R 中,for 循环并不像在其他语言中那么重要,因为 R 是一种函数式编程语言。这意味着可以将 for 循环封装到一个函数中,然后调用该函数,而不是直接使用 for 循环。
为了理解为什么这一点很重要,请(再次)考虑这个简单的数据框:
df <- tibble( a = rnorm(10), b = rnorm(10), c = rnorm(10), d = rnorm(10) )
假设你想计算每一列的均值。你可以用 for 循环来实现:
output <- vector("double", length(df)) for (i in seq\_along(df)) { output[[i]] <- mean(df[[i]]) } output #> [1] 0.2026 -0.2068 0.1275 -0.0917
你意识到以后会经常需要计算每一列的均值,所以把它提取成一个函数:
col\_mean <- function(df) { output <- vector("double", length(df)) for (i in seq\_along(df)) {