【发布时间】:2020-03-30 09:17:02
【问题描述】:
我需要帮助,我正在尝试在具有相同 df 的另一个函数中运行一个函数,但是当我运行代码时总是出现错误消息
下面是我的 df 示例
X <- c("Bloc", "Mp", "xcible", "ycible", "xO", "yO", "xN", "yN", "xE", "yE", "xS", "yS", "ID_ligne")
C <- c("LE-01", 22, 2.404024, -39.5192, -7.296761, -43.66444, -8.135254, -0.8619174, 6.710631, 0.20917, 7.339786, -41.44318, "LE-01-B-006-22")
D <- c("LE-01", 20, 1.362262, -40.59871, -7.296761, -43.66444, -8.135254, -0.8619174, 6.710631, 0.20917, 7.339786, -41.44318, "LE-01-B-006-20")
E <-c("LE-01", 22, 2.404024, -39.5192, -7.296761, -43.66444, -8.135254, -0.8619174, 6.710631, 0.20917, 7.339786, -41.44318, "LE-01-B-005-22")
G <- c("LE-01", 20, 1.362262, -40.59871, -7.296761, -43.66444, -8.135254, -0.8619174, 6.710631, 0.20917, 7.339786, -41.44318, "LE-01-B-005-20")
H <- c("LE-01", 24, 1.710175, -33.79383, -7.296761, -43.66444, -8.135254, -0.8619174, 6.710631, 0.20917, 7.339786, -41.44318, "LE-01-B-004-24")
J <- c("LE-01", 22, 2.404024, -39.5192, -7.296761, -43.66444, -8.135254, -0.8619174, 6.710631, 0.20917, 7.339786, -41.44318, "LE-01-B-003-22")
Ex <- rbind(C,D,E,G,H,J)
colnames(Ex) <- X
Ex <- as.data.frame(Ex)
Ex$xO <- as.numeric(as.character(Ex$xO))
Ex$xS <- as.numeric(as.character(Ex$xS))
Ex$xN <- as.numeric(as.character(Ex$xN))
Ex$xE <- as.numeric(as.character(Ex$xE))
Ex$yO <- as.numeric(as.character(Ex$yO))
Ex$yS <- as.numeric(as.character(Ex$yS))
Ex$yN <- as.numeric(as.character(Ex$yN))
Ex$yE <- as.numeric(as.character(Ex$yE))
Ex.list <- split(Ex, f = Ex$ID_ligne)
下面是我尝试运行的较大的函数
eq_affine <- function(x1, y1, x2, y2){
pente <- (y2 - y1)/(x2 - x1)
int <- y2 - pente*x2
return(c(pente, int))
更大的功能,但出现错误消息时减少到行
exp_lin_fun_rect <- function(xO, xS, xE, xN,
yO, yS, yE, yN,
xcible, ycible,
xcompe, ycompe){
eqSE <- eq_affin(xS, yS, xE, yE)
eqEN <- eq_affine(xE, yE, xN, yN)
eqNO <- eq_affine(xN, yN, xO, yO)
eqOS <- eq_affine(xO, yO, xS, yS)
return(data.frame(cbind(eqSE, eqEN, eqNO, eqOS)))
}
以及我尝试运行的代码:
Ex <- unlist(lapply(Ex.list, exp_lin_fun_rect))
错误信息总是Error in eq_affine(xS, yS, xE, yE) :
argument "yE" is missing, with no default
不需要剩下的更大的函数,因为错误发生在代码的第一行。我使用列表是因为我有大量数据,而且这样工作更容易
感谢您的帮助
【问题讨论】:
-
你试过
Ex <- unlist(lapply(Ex.list, with, exp_lin_fun_rect(xO, xS, xE, xN, yO, yS, yE, yN, xcible, ycible, xcompe, ycompe)))吗? -
谢谢你,它在没有 unlist 的情况下工作
-
感谢您的反馈。很高兴我能帮上忙!