【发布时间】:2020-03-11 01:41:46
【问题描述】:
如果这是一个愚蠢的问题,我深表歉意——我对 R 很陌生,并且一直在努力自学。我一直在尝试使用 map 函数而不是 for 循环来重写以下代码。
columnmean <- function(y){
nc <- ncol(y)
means <- numeric(nc)
for(i in 1:nc){
means[i] <- mean(y[, i])
}
means
}
columnmean(mtcars)
我使用地图的代码打印出手段,但它也添加了列名。如何正确利用地图来避免这种情况?我应该使用 imap 还是 map2?谢谢!
columnmean1 <- function(y){
nc <- ncol(y)
means <- numeric(nc)
map(y, function (y) means <- mean(y) )
}
columnmean1(mtcars)
【问题讨论】:
-
欢迎来到 Stack Overflow!您能否阅读并合并来自How to make a great R reproducible example 的元素?尤其是使用
dput()作为输入的方面,然后是您预期数据集的明确示例? -
感谢您的建议!我不太了解如何使用 dput(),但我希望通过包含 mtcars 数据集,它可以让每个人更容易理解我看到的问题。
-
几件事:(1)注意嵌套函数中的变量重用。您将
y用于columnmean1中的两个不同变量。 (2)让map中的匿名函数返回一些东西,并分配整个map()调用的结果,而不是在函数内,例如means <- map(mtcars, function(col) mean(col))(与means <- map(mtcars, mean)相同)。 -
在你了解
map(和map_dbl、map_chr等)之前,不要担心map2或imap