gpt4 book ai didi

r - base R 中的行操作问题

转载 作者:行者123 更新时间:2023-12-05 04:43:14 25 4
gpt4 key购买 nike

我在使用 R 中的“应用”函数执行逐行操作时遇到问题。我想计算两点之间的距离:

d <- function(x,y){
length <- norm(x-y,type="2")
as.numeric(length)
}

坐标由两个数据框给出:

start <- data.frame(
a = c(7, 5, 17, 1),
b = c(5, 17, 1, 2))

stop <- data.frame(
b = c(5, 17, 1, 2),
c = c(17, 1, 2, 1))

我的观点是计算由开始和停止坐标给出的连续距离。我希望它像这样工作:

d(start[1,], stop[1,])
d(start[2,], stop[2,])
d(start[3,], stop[3,])
etc...

我试过:

apply(X = start, MARGIN = 1, FUN = d, y = stop)

这带来了一些奇怪的结果。你能帮我找到合适的解决方案吗?我知道如何使用 dplyr rowwise() 函数执行操作,但是我希望只使用 base 。您能否也解释一下为什么我使用 apply() 会收到如此奇怪的结果?

最佳答案

遍历行序列并应用 d

sapply(seq_len(nrow(start)), function(i) d(start[i,], stop[i,]))
[1] 12.165525 20.000000 16.031220 1.414214

或者如果我们想使用apply,通过cbind创建单个数据然后通过索引子集

apply(cbind(start, stop), 1, FUN = function(x) d(x[1:2], x[3:4]))
[1] 12.165525 20.000000 16.031220 1.414214

或者可以使用dapply来提高效率

library(collapse)
dapply(cbind(start, stop), MARGIN = 1, parallel = TRUE,
FUN = function(x) d(x[1:2], x[3:4]))
[1] 12.165525 20.000000 16.031220 1.414214

关于r - base R 中的行操作问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69668762/

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