r - 在 R 中生成图形时出错:“x”和“y”长度不同
问题描述
你能帮我从下面的代码生成图表吗?它给出以下错误: Error in xy.coords(x, y) : 'x' and 'y' lengths differ
. 需要在图形生成中进行一些调整!
谢谢你的帮助!
library(dplyr)
df <- structure(
list(date = c("2021-06-30","2021-06-30","2021-07-07","2021-07-07","2021-07-09","2021-07-09","2021-07-09","2021-07-16"),
Code = c("ABC","BCD","ABC","BCD","DCE","CDE","DCE","CDE"),
Week= c("Wednesday","Wednesday","Wednesday","Wednesday","Friday","Friday","Friday","Friday"),
DR1 = c(4,1,4,3,3,4,3,5)),
class = "data.frame", row.names = c(NA, -8L))
dmda<-"2021-06-30"
CodeChosse<-"ABC"
datas <- structure(
list(Code = c("ABC","ABC"),
Days = c(11,12),
Numbers = c(11,12)),
class = "data.frame", row.names = c(NA, -2L))
f1 <- function(dat, code_nm) {
dat <- subset(dat, Code == code_nm)
mxrange <- range(datas$Numbers)
mxrange[2] <- mxrange[2] - (mxrange[2] %%10) + 10
max<-max(datas$Days, na.rm = TRUE)+1
dmda<-paste(rev(unlist(strsplit(dmda, "-", fixed = TRUE))), collapse = "/")
plot(Numbers ~ Days, xlim= c(0,max), ylim= c(0,mxrange[2]),
xaxs='i',data = dat,main = paste0(dmda, "-", code_nm))
if (nrow(dat)<=2){
m<-df %>%
group_by(Code,Week) %>%
summarize(across(starts_with("DR1"), mean))
m <- subset(m, Week == df$Week[match(dmda, df$date)] & Code == CodeChosse)$DR1
abline(h=m,lwd=2)
points(0, m, col = "red", pch = 19, cex = 2, xpd = TRUE)
text(.1,m+ .5, round(m,1), cex=1.1,pos=4,offset =1,col="black")
}
}
f1(datas, CodeChosse)
> f1(datas, CodeChosse)
Error in xy.coords(x, y) : 'x' and 'y' lengths differ
如果你m
在函数之外做,它可以工作,据我所见,但我想把它留在函数内。
m<-df %>%
group_by(Code,Week) %>%
summarize(across(starts_with("DR1"), mean))
m <- subset(m, Week == df$Week[match(dmda, df$date)] & Code == CodeChosse)$DR1
f1 <- function(dat, code_nm) {
dat <- subset(dat, Code == code_nm)
mxrange <- range(datas$Numbers)
mxrange[2] <- mxrange[2] - (mxrange[2] %%10) + 10
max<-max(datas$Days, na.rm = TRUE)+1
dmda<-paste(rev(unlist(strsplit(dmda, "-", fixed = TRUE))), collapse = "/")
plot(Numbers ~ Days, xlim= c(0,max), ylim= c(0,mxrange[2]),
xaxs='i',data = dat,main = paste0(dmda, "-", code_nm))
if (nrow(dat)<=2){
abline(h=m,lwd=2)
points(0, m, col = "red", pch = 19, cex = 2, xpd = TRUE)
text(.1,m+ .5, round(m,1), cex=1.1,pos=4,offset =1,col="black")
}
}
f1(datas, CodeChosse)
解决方案
问题似乎在创建的subset
级别-并且“df”的“日期”列中的格式是. 如果我们更改其中任何一个的格式,它可以在dmda
format
dd/mm/YYYY
YYYY-MM-DD
==
f1 <- function(dat, code_nm) {
dat <- subset(dat, Code == code_nm)
mxrange <- range(datas$Numbers)
mxrange[2] <- mxrange[2] - (mxrange[2] %%10) + 10
max<-max(datas$Days, na.rm = TRUE)+1
dmda<-paste(rev(unlist(strsplit(dmda, "-", fixed = TRUE))), collapse = "/")
plot(Numbers ~ Days, xlim= c(0,max), ylim= c(0,mxrange[2]),
xaxs='i',data = dat,main = paste0(dmda, "-", code_nm))
if (nrow(dat)<=2){
m<-df %>%
group_by(Code,Week) %>%
summarize(across(starts_with("DR1"), mean), .groups = 'drop')
m <- subset(m, Week == df$Week[match(dmda, format(as.Date(df$date), "%d/%m/%Y"))] & Code == CodeChosse)$DR1
abline(h=m,lwd=2)
points(0, m, col = "red", pch = 19, cex = 2, xpd = TRUE)
text(.1,m+ .5, round(m,1), cex=1.1,pos=4,offset =1,col="black")
}
}
-测试
f1(datas, CodeChosse)
-输出
推荐阅读
- snowflake-cloud-data-platform - 将 CSV 数据加载到雪花表
- python - Python Flask 和 Nginx-> 路由重定向
- python - 如何有效地删除熊猫中某些列的值高于 99% 的所有行?
- c++ - 第二次使用方法时访问冲突读取位置 0xFFFFFFF8
- r - 通过两个列表的复杂比较创建一个列表
- javascript - 页面刷新到屏幕阅读器时触发角色“警报”
- batch-file - 如何列出文件夹中的所有文件然后选择多个文件
- node.js - 使用 XLSX 按列读取值
- java - 在java中使用两个类
- sql - 如何按Oracle中出现次数最多的项目进行分组