我一直在研究整个tidyverse生态系统(只是一点点),我一直在想如何解决该问题。 更笼统地说,我一直想知道如何在Transmute中编写自定义函数来处理(循环)行
我的问题:我想计算数据集的最后一行与所有其他行之间的距离度量。然后,我想将带有距离度量的向量添加到我的数据中。
这是我试图以非排字的方式做的事的最小可重现示例
data(iris)
mydata <- iris[, -5]
mydata$distance <- sapply(1:nrow(mydata), function(j){
dist(rbind(mydata[nrow(mydata), ], mydata[j, ]))})
这有效,并且给了我我所需的东西。
但是,我为解决问题进行的整齐尝试失败了,我一直在努力解决这个问题-希望得到帮助!
mydata <- select(iris, -Species)
mydata %>% transmute(function(x){
for (i in 1:nrow(x)) {
dist(rbind(x[i, ],x[nrow(x), ]))
}
})
非常感谢!
答案 0 :(得分:0)
如果您希望将向量添加到数据中,则需要使用cumsum
而不是mutate
。 transmute
只会给您返回单个结果,而mutate会将列添加到数据中。
您的原始功能也可以正常使用,但是如果您想使用transmute
,则需要将tidyverse
换成sapply
(来自map_dbl
)和{ purrr
的{1}}
rbind