Форматирование вывода на печать в R

#r

#r

Вопрос:

У меня есть данные в виде

 -418 -26066 -539 -33810
-763 -47745 207 12395
-701 14732 473 -8748
 862 -19061 744 -16347
680 59377 -637 -53885
-720 35840 -486 23906
-147 3505 762 -20129
677 -53800 849 -67388
-690 42730 995 -63425
203 -4108 620 -11614
93 -6381 26 -1423
-230 -6255 135 3600
498 -8020 341 -5665
855 -35988 306 -12381
69 -4017 -329 17475
 

и мой код

 library(data.table)

x1 <- Problem10_data$V1
y1 <- Problem10_data$V2
x2 <- Problem10_data$V3
y2 <- Problem10_data$V4

a = (y2 - y1) / (x2 - x1)
b = (x2*y1 - x1*y2) / (x2 - x1)

points <- transpose(data.frame(a = a, b = b))

for (var in points){
  cat('(', var, ')', sep = " ")
}
 

мой вывод

 ( 64 686 )( 62 -439 )( -20 712 )
 

но то, что я хочу, это

 (64 686) (62 -439) (-20 712) 
 

итак, я попытался использовать также печать и форматирование и т. Д. Но я не смог добиться успеха. Любая помощь будет оценена.

Ответ №1:

Почему бы не использовать это небольшое изменение в вашем cat заявлении?

cat("(",paste(var,collapse=" "),") ",sep="")

Я рассматриваю этот упрощенный пример:

 points=list(c(1,-2),c(10,-20)) 
for (var in points)
cat("(",paste(var,collapse=" "),") ",sep="")
 

Я получаю

(1 -2) (10 -20)

Ответ №2:

Как насчет этого, используя sprintf()

 Problem10_data <- tibble::tribble(
~V1, ~V2, ~V3, ~V4, 
-418, -26066, -539, -33810,
-763, -47745, 207, 12395,
-701, 14732, 473, -8748,
862, -19061, 744, -16347,
680, 59377, -637, -53885,
-720, 35840, -486, 23906,
-147, 3505, 762, -20129,
677, -53800, 849, -67388,
-690, 42730, 995, -63425,
203, -4108, 620, -11614,
93, -6381, 26, -1423,
-230, -6255, 135, 3600,
498, -8020, 341, -5665,
855, -35988, 306, -12381,
69, -4017, -329, 17475)

sprintf("(%.0f %.0f)", points[1,], points[2,])
# [1] "(64 686)"   "(62 -439)"  "(-20 712)"  "(-23 765)"  "(86 897)"   "(-51 -880)" "(-26 -317)" "(-79 -317)"
# [9] "(-63 -740)" "(-18 -454)" "(-74 501)"  "(27 -45)"   "(-15 -550)" "(-43 777)"  "(-54 -291)"
 

Или, если это должно быть все в одной строке:

 paste(sprintf("(%.0f %.0f)", points[1,], points[2,]), collapse=" ")
# [1] "(64 686) (62 -439) (-20 712) (-23 765) (86 897) (-51 -880) (-26 -317) (-79 -317) (-63 -740) (-18 -454) (-74 501) (27 -45) (-15 -550) (-43 777) (-54 -291)"

 

Комментарии:

1. Не могли бы вы настроить код так, чтобы он работал для моего кода. Мне не нужен совершенно новый код..