我编写了一个函数来对频率(数据框中的值)进行一些计算,并将其放在新的列中。如果值为NA
,则无法执行某些计算,因此将其更改为0。随后,由于无法将值除以0,因此我希望结果为第一个频率。
现在,该函数在函数中的IF语句之后停止。你们能在没有数据的情况下看到问题是什么吗?
B <- function(frame1, frame2, col){
Bframe <- merge(frame1, frame2, by = column, all = TRUE)
Bframe$freq.x[is.na(Bframe$freq.x)] <- 0
Bframe$freq.y[is.na(Bframe$freq.y)] <- 0
if (Bframe$freq.y == 0) {
Bframe$result <- Bframe$freq.x
}
Bframe$result <- Bframe["freq.x"] - Bframe["freq.y"]
Bframe$percentage <- (Bframe["result"]/Bframe["freq.y"])*100
Bframe$percABS <- abs(Bframe$percentage)
return(Bframe)
}
因此,该函数的工作结果为Bframe $ result。结构有问题吗?
我也遇到了一个错误: 警告信息: 在if(Bframe $ freq.y == 0){: 条件的长度> 1,并且仅使用第一个元素。
如果您确实需要一些输入数据,请告诉我。