R 从循环中提取最大值和最小值
我的数据是:R 从循环中提取最大值和最小值,r,R,我的数据是: x1=c(55,60,75,80) x2=c(30,20,15,23) x3=c(4,3,2,6) x=data.frame(x1,x2,x3) a=c(10,20,30) b=c(25,10,15) p=cbind(a,b) for (i in 1:2) { z=x-p[,i] print(z) } x1 x2 x3 1 45 10 -26 2 40 -10 -7 3 45 5 -18 4 70 3 -24 x1 x2 x3 1 30 20 -1
x1=c(55,60,75,80)
x2=c(30,20,15,23)
x3=c(4,3,2,6)
x=data.frame(x1,x2,x3)
a=c(10,20,30)
b=c(25,10,15)
p=cbind(a,b)
for (i in 1:2) {
z=x-p[,i]
print(z) }
x1 x2 x3
1 45 10 -26
2 40 -10 -7
3 45 5 -18
4 70 3 -24
x1 x2 x3
1 30 20 -11
2 50 5 -22
3 60 -10 -8
4 55 13 -9
如何从z中提取循环所有迭代的最大值和最小值{min(z),max(z)}??我的结果是这样的
min(z)=-26
max(z)=70
你可以用
range(sapply(as.data.frame(p), "-", unlist(x)) * -1)
#[1] -26 70
当然,您也可以选择min
或max
而不是range
,后者只返回两者
关于for循环方法,您应该注意,在循环的每次迭代中都会覆盖z
,因此循环完成后,它只保存上次运行的结果
如果要在for循环中执行此操作,必须创建一个变量来存储结果:
z <- vector("list", length = 2)
for (i in 1:2) {
z[[i]]=x-p[,i]
}
> z
#[[1]]
# x1 x2 x3
#1 45 10 -26
#2 40 -10 -7
#3 45 5 -18
#4 70 3 -24
#
#[[2]]
# x1 x2 x3
#1 30 20 -11
#2 50 5 -22
#3 60 -10 -8
#4 55 13 -9
你可以用
range(sapply(as.data.frame(p), "-", unlist(x)) * -1)
#[1] -26 70
当然,您也可以选择min
或max
而不是range
,后者只返回两者
关于for循环方法,您应该注意,在循环的每次迭代中都会覆盖z
,因此循环完成后,它只保存上次运行的结果
如果要在for循环中执行此操作,必须创建一个变量来存储结果:
z <- vector("list", length = 2)
for (i in 1:2) {
z[[i]]=x-p[,i]
}
> z
#[[1]]
# x1 x2 x3
#1 45 10 -26
#2 40 -10 -7
#3 45 5 -18
#4 70 3 -24
#
#[[2]]
# x1 x2 x3
#1 30 20 -11
#2 50 5 -22
#3 60 -10 -8
#4 55 13 -9
我很感激你的回答,但是如果我用这种方法减去x,那又怎么样呢?我不理解你的评论,请详细说明。
for(I in 1:2){z=abs(sweep(x,2,p[,I],'-'))print(z)}
max=70,min=0@user5934339,这仍然在覆盖z。看到我的最新答案我很感激你的回答,但是如果我用这种方法减去xz=abs(sweep(x,2,p[,I],'-'))
@user5934339,那又怎么样?我不理解你的评论,请详细说明。for(I in 1:2){z=abs(sweep(x,2,p[,I],'-'))print(z)}
max=70,min=0@user5934339,这仍然在覆盖z。我的目标是最小值和最大值。我的目标是最小值和最大值。