结果的行数不是 R 中向量长度 (arg 2) 的倍数
number of rows of result is not a multiple of vector length (arg 2) in R
我有与我的主题相关的新问题
。
在新情况下,变量 x 和 x1 具有不同的长度
x <- c(-10, 1:6, 50)
x1<- c(-20, 1:5, 60)
z<- c(1,2,3,4,5,6,7,8)
bx <- boxplot(x)
bx$out
bx1 <- boxplot(x1)
bx1$out
x<- x[!(x %in% bx$out)]
x1 <- x1[!(x1 %in% bx1$out)]
x_to_remove<-which(x %in% bx$out)
x <- x[!(x %in% bx$out)]
x1_to_remove<-which(x1 %in% bx1$out)
x1 <- x1[!(x1 %in% bx1$out)]
z<-z[-unique(c(x_to_remove,x1_to_remove))]
z
data.frame(cbind(x,x1,z))
然后我收到警告
Warning message:
In cbind(x, x1, z) :
number of rows of result is not a multiple of vector length (arg 2)
所以在新的数据框中 obs。 Z 不对应于 x 和 x1。
我该如何决定这个问题?
这个解决方案对我没有帮助
或者我只是做错了什么。
编辑
x_to_remove<-which(x %in% bx$out)
x <- x[!(x %in% bx$out)]
x1_to_remove<-which(x1 %in% bx1$out)
x1 <- x1[!(x1 %in% bx1$out)]
z<-z[-unique(c(x_to_remove,x1_to_remove))]
z
d=data.frame(cbind(x,x1,z))
d
错了
警告信息:
In cbind(x, x1, z) :
number of rows of result is not a multiple of vector length (arg 2)
d
x x1 z
1 1 1 2
2 2 2 3
3 3 3 4
4 4 4 5
5 5 5 6
6 6 1 2
这 3 个列如何获得此输出
Na Na Na
1 1 2
2 2 3
3 3 4
4 4 5
5 5 6
Na Na Na
Na Na Na
第六行(d)多余
第一个问题是原始 x、x1 和 z 列表中的不同长度,你怎么能说哪些 z 值与每个 x 和 x1 值相关?
x <- c(-10, 1:6, 50)
x1<- c(-20, 1:5, 60)
z<- c(1,2,3,4,5,6,7,8)
length(x)
[1] 8
length(x1)
[1] 7
length(z)
[1] 8
这里还有一个问题:
x<- x[!(x %in% bx$out)] #remove this
x1 <- x1[!(x1 %in% bx1$out)] #remove this
x_to_remove<-which(x %in% bx$out)
x <- x[!(x %in% bx$out)]
x1_to_remove<-which(x1 %in% bx1$out)
x1 <- x1[!(x1 %in% bx1$out)]
您在计算 x_to_remove
和 x1_to_remove
之前清除了 x
和 x1
编辑:
要获得您想要的输出,请尝试此代码(/ode 行添加在评论中签名):
x <- c(-10, 1:6, 50)
x1<- c(-20, 1:5, 60)
z<- c(1,2,3,4,5,6,7,8)
length_max<-min(length(x),length(x1),length(z)) #Added: identify max length before outlier detection
bx <- boxplot(x)
bx1 <- boxplot(x1)
x_to_remove<-which(x %in% bx$out)
x <- x[!(x %in% bx$out)]
x1_to_remove<-which(x1 %in% bx1$out)
x1 <- x1[!(x1 %in% bx1$out)]
z<-z[-unique(c(x_to_remove,x1_to_remove))]
length_min<-min(length(x),length(x1),length(z)) #Minimum length after outlier remove
d=data.frame(cbind(x[1:length_min],x1[1:length_min],z[1:length_min])) #Bind columns
colnames(d)<-c("x","x1","z")
d_NA<-as.data.frame(matrix(rep(NA,(length_max-length_min)*3),nrow=(length_max-length_min))) #Create NA rows
colnames(d_NA)<-c("x","x1","z")
d<-rbind(d,d_NA) #Your desired output
d
x x1 z
1 1 1 2
2 2 2 3
3 3 3 4
4 4 4 5
5 5 5 6
6 NA NA NA
7 NA NA NA
我有与我的主题相关的新问题
x <- c(-10, 1:6, 50)
x1<- c(-20, 1:5, 60)
z<- c(1,2,3,4,5,6,7,8)
bx <- boxplot(x)
bx$out
bx1 <- boxplot(x1)
bx1$out
x<- x[!(x %in% bx$out)]
x1 <- x1[!(x1 %in% bx1$out)]
x_to_remove<-which(x %in% bx$out)
x <- x[!(x %in% bx$out)]
x1_to_remove<-which(x1 %in% bx1$out)
x1 <- x1[!(x1 %in% bx1$out)]
z<-z[-unique(c(x_to_remove,x1_to_remove))]
z
data.frame(cbind(x,x1,z))
然后我收到警告
Warning message:
In cbind(x, x1, z) :
number of rows of result is not a multiple of vector length (arg 2)
所以在新的数据框中 obs。 Z 不对应于 x 和 x1。
我该如何决定这个问题?
这个解决方案对我没有帮助
编辑
x_to_remove<-which(x %in% bx$out)
x <- x[!(x %in% bx$out)]
x1_to_remove<-which(x1 %in% bx1$out)
x1 <- x1[!(x1 %in% bx1$out)]
z<-z[-unique(c(x_to_remove,x1_to_remove))]
z
d=data.frame(cbind(x,x1,z))
d
错了 警告信息:
In cbind(x, x1, z) :
number of rows of result is not a multiple of vector length (arg 2)
d
x x1 z
1 1 1 2
2 2 2 3
3 3 3 4
4 4 4 5
5 5 5 6
6 6 1 2
这 3 个列如何获得此输出
Na Na Na
1 1 2
2 2 3
3 3 4
4 4 5
5 5 6
Na Na Na
Na Na Na
第六行(d)多余
第一个问题是原始 x、x1 和 z 列表中的不同长度,你怎么能说哪些 z 值与每个 x 和 x1 值相关?
x <- c(-10, 1:6, 50)
x1<- c(-20, 1:5, 60)
z<- c(1,2,3,4,5,6,7,8)
length(x)
[1] 8
length(x1)
[1] 7
length(z)
[1] 8
这里还有一个问题:
x<- x[!(x %in% bx$out)] #remove this
x1 <- x1[!(x1 %in% bx1$out)] #remove this
x_to_remove<-which(x %in% bx$out)
x <- x[!(x %in% bx$out)]
x1_to_remove<-which(x1 %in% bx1$out)
x1 <- x1[!(x1 %in% bx1$out)]
您在计算 x_to_remove
和 x1_to_remove
x
和 x1
编辑: 要获得您想要的输出,请尝试此代码(/ode 行添加在评论中签名):
x <- c(-10, 1:6, 50)
x1<- c(-20, 1:5, 60)
z<- c(1,2,3,4,5,6,7,8)
length_max<-min(length(x),length(x1),length(z)) #Added: identify max length before outlier detection
bx <- boxplot(x)
bx1 <- boxplot(x1)
x_to_remove<-which(x %in% bx$out)
x <- x[!(x %in% bx$out)]
x1_to_remove<-which(x1 %in% bx1$out)
x1 <- x1[!(x1 %in% bx1$out)]
z<-z[-unique(c(x_to_remove,x1_to_remove))]
length_min<-min(length(x),length(x1),length(z)) #Minimum length after outlier remove
d=data.frame(cbind(x[1:length_min],x1[1:length_min],z[1:length_min])) #Bind columns
colnames(d)<-c("x","x1","z")
d_NA<-as.data.frame(matrix(rep(NA,(length_max-length_min)*3),nrow=(length_max-length_min))) #Create NA rows
colnames(d_NA)<-c("x","x1","z")
d<-rbind(d,d_NA) #Your desired output
d
x x1 z
1 1 1 2
2 2 2 3
3 3 3 4
4 4 4 5
5 5 5 6
6 NA NA NA
7 NA NA NA