以R中的一行向量打印循环输出

以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

我想为每个变量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=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