我尝试运行以下循环,但始终收到错误“要替换的项目数不是替换长度的倍数”。谁能帮我了解为什么会这样?另外,我需要以某种方式将角度矢量包含到矩阵中,并且不知道如何。到目前为止,这是我的循环:
anglematrix <- numeric()
for(i in 1:length(fish2$X))
{
a1 <- as.numeric(fish2[1, c(1,2)])
a2 <- as.numeric(fish2[1 + 1, c(1,2)])
a3 <- as.numeric(fish2[1 + 2, c(1,2)])
angles <- Angle(a1, a2, a3, label=FALSE)
anglematrix[i] <- matrix(NA, nrow=length(fish2$X)-2, ncol=1)
}
这是我的数据集的前六行结构
structure(list(X = c(147.8333333, 148.5, 151.1666667, 154.5,158.1666667, 161.5), Y = c(258.5, 258.8333333, 260.8333333, 264.5,266.5, 269.5)), row.names = c(NA, 6L), class = "data.frame")
在矩阵内的单列中,输出应为176个角度计算。感谢您的帮助!
答案 0 :(得分:1)
您的原始代码中有很多地方出错,但是以下工作有效,并且应该为您提供有关错误地方的指导。可能要看的最重要的事情是,您应该在循环之前定义一个空矩阵,并使用迭代器i
指定每次更新哪个值来在循环内填充其值。注意:我假设您使用的是Angle
中的library(LearnGeom)
,因为您未指定此函数的来源:
Nangles = NROW(fish2) - 2
anglematrix = matrix(nr = Nangles, nc=1)
for(i in 1:Nangles) {
a1 <- as.numeric(fish2[i, ])
a2 <- as.numeric(fish2[i + 1, ])
a3 <- as.numeric(fish2[i + 2, ])
anglematrix[i] <- Angle(a1, a2, a3, label=FALSE)
}