以R中的一行向量打印循环输出
我想为每个变量dd和vv打印一行输出以R中的一行向量打印循环输出,r,loops,for-loop,R,Loops,For Loop,我想为每个变量dd和vv打印一行输出 df=c(1:20) df=matrix(df,ncol = 5,nrow = 4, byrow = T) x=c(1.5,7.5,12.5,19.5) for (j in 1:4) { for (i in 1:4) { if( sum(df[j,i],df[j,i+1])/2 ==x[j]) {xx=c(df[j,i],df[j,i+1]) } } dd=as.vector((df[j,i+1]-df[j,i])/6) vv
df=c(1:20)
df=matrix(df,ncol = 5,nrow = 4, byrow = T)
x=c(1.5,7.5,12.5,19.5)
for (j in 1:4) {
for (i in 1:4) {
if( sum(df[j,i],df[j,i+1])/2 ==x[j])
{xx=c(df[j,i],df[j,i+1]) }
}
dd=as.vector((df[j,i+1]-df[j,i])/6)
vv=as.vector(xx)
print(c(vv,dd))
}
我得到了以下信息
[1] 1.0000000 2.0000000 0.1666667
[1] 7.0000000 8.0000000 0.1666667
[1] 12.0000000 13.0000000 0.1666667
[1] 19.0000000 20.0000000 0.1666667
我想从代码中打印的是
[1] 1 2 7 8 12 13 19 20
及
下面是一种将结果存储在向量中的方法:
# store the results
dd_var = c()
vv_var = c()
for (j in 1:4) {
for (i in 1:4) {
if( sum(df[j,i],df[j,i+1])/2 ==x[j])
{xx=c(df[j,i],df[j,i+1]) }
}
dd=as.vector((df[j,i+1]-df[j,i])/6)
vv=as.vector(xx)
dd_var = append(dd_var, dd)
vv_var = append(vv_var, vv)
}
cat(dd_var,'\t')
0.1666667 0.1666667 0.1666667 0.1666667
cat(vv_var, '\t')
1 2 7 8 12 13 19 20
下面是一种将结果存储在向量中的方法:
# store the results
dd_var = c()
vv_var = c()
for (j in 1:4) {
for (i in 1:4) {
if( sum(df[j,i],df[j,i+1])/2 ==x[j])
{xx=c(df[j,i],df[j,i+1]) }
}
dd=as.vector((df[j,i+1]-df[j,i])/6)
vv=as.vector(xx)
dd_var = append(dd_var, dd)
vv_var = append(vv_var, vv)
}
cat(dd_var,'\t')
0.1666667 0.1666667 0.1666667 0.1666667
cat(vv_var, '\t')
1 2 7 8 12 13 19 20
与@YOLO的想法非常相似。。。将结果存储到对象中,并使用
cat
打印。还有其他的方法
dd.out <- c()
vv.out <- c()
for (j in 1:4) {
for (i in 1:4) {
if( sum(df[j,i],df[j,i+1])/2 ==x[j])
{xx=c(df[j,i],df[j,i+1]) }
}
dd=as.vector((df[j,i+1]-df[j,i])/6)
vv=as.vector(xx)
# Growing an object is not optimal, but works.
dd.out <- c(dd.out, dd)
vv.out <- c(vv.out, vv)
}
cat(vv.out, "\n", dd.out)
1 2 7 8 12 13 19 20
0.1666667 0.1666667 0.1666667 0.1666667
dd.out与@YOLO的想法非常相似。。。将结果存储到对象中,并使用cat
打印。还有其他的方法
dd.out <- c()
vv.out <- c()
for (j in 1:4) {
for (i in 1:4) {
if( sum(df[j,i],df[j,i+1])/2 ==x[j])
{xx=c(df[j,i],df[j,i+1]) }
}
dd=as.vector((df[j,i+1]-df[j,i])/6)
vv=as.vector(xx)
# Growing an object is not optimal, but works.
dd.out <- c(dd.out, dd)
vv.out <- c(vv.out, vv)
}
cat(vv.out, "\n", dd.out)
1 2 7 8 12 13 19 20
0.1666667 0.1666667 0.1666667 0.1666667
dd.out这里的情况是print语句在for循环中,没有将结果存储为附加所有答案的向量(相反,代码将每个结果存储为每次迭代的唯一变量)。我看到了前面的答案,但这里是我的修改,这是非常类似于你原来的
1) 添加了两个空向量,dd和vv
2) 将每个循环结果存储到各自的向量中
3) 在for循环外打印语句
dd <- NULL
vv <- NULL
df=c(1:20)
df=matrix(df,ncol = 5,nrow = 4, byrow = T)
x=c(1.5,7.5,12.5,19.5)
for (j in 1:4) {
for (i in 1:4) {
if( sum(df[j,i],df[j,i+1])/2 ==x[j])
{xx=c(df[j,i],df[j,i+1]) }
}
dd <- as.vector(c(dd,(df[j,i+1]-df[j,i])/6))
vv <- as.vector(c(vv,(xx)))
}
print(dd)
print(vv)
dd这里的情况是print语句在for循环中,没有将结果存储为附加所有答案的向量(相反,代码将每个结果存储为每次迭代的唯一变量)。我看到了前面的答案,但这里是我的修改,这是非常类似于你原来的
1) 添加了两个空向量,dd和vv
2) 将每个循环结果存储到各自的向量中
3) 在for循环外打印语句
dd <- NULL
vv <- NULL
df=c(1:20)
df=matrix(df,ncol = 5,nrow = 4, byrow = T)
x=c(1.5,7.5,12.5,19.5)
for (j in 1:4) {
for (i in 1:4) {
if( sum(df[j,i],df[j,i+1])/2 ==x[j])
{xx=c(df[j,i],df[j,i+1]) }
}
dd <- as.vector(c(dd,(df[j,i+1]-df[j,i])/6))
vv <- as.vector(c(vv,(xx)))
}
print(dd)
print(vv)
dd