В настоящее время у меня есть неуклюжее решение, которое позволяет склеивать фрагменты текста и элементы списка в одну строку. Некоторые пробелы необходимы, чтобы остаться, а другие должны быть удалены.
Мой код в настоящее время дает желаемый результат:
"Текст 1 имеет пробелы (x + 60) (x + 60) - (y + 30) (y + 30) - (z-20) * (z-20) Text2 имеет пробелы a1Text3"
Но в остальном это не так красноречиво, и мне было интересно, есть ли лучшие способы достижения того же результата?
x <- seq(-60,60, length.out = 5)
y <- seq(-30,10, length.out = 5)
z <- seq(20,60, length.out = 5)
area <- c("a1","a2","a3","a4", "a5")
newlist <- list(x,y,z,area)
Text1 <- "Text 1 has spaces"
Text2 <- "Text2 has spaces"
Text3 <- "Text3"
formula <- paste("(x-", newlist[[1]],")*","(x-", newlist[[1]],")", "-",
"(y-", newlist[[2]],")*","(y-", newlist[[2]],")","-",
"(z-", newlist[[3]],")*","(z-", newlist[[3]],")")
formula <- gsub(" ", "", formula)
formula <- gsub("--", "+", formula)
newname <- paste(newlist[[4]],Text3)
newname <- gsub(" ", "", newname)
result <- paste(Text1,formula,Text2,newname)
result
[1] "Text 1 has spaces (x+60)*(x+60)-(y+30)*(y+30)-(z-20)*(z-20) Text2 has spaces a1Text3"
[2] "Text 1 has spaces (x+30)*(x+30)-(y+20)*(y+20)-(z-30)*(z-30) Text2 has spaces a2Text3"
[3] "Text 1 has spaces (x-0)*(x-0)-(y+10)*(y+10)-(z-40)*(z-40) Text2 has spaces a3Text3"
[4] "Text 1 has spaces (x-30)*(x-30)-(y-0)*(y-0)-(z-50)*(z-50) Text2 has spaces a4Text3"
[5] "Text 1 has spaces (x-60)*(x-60)-(y-10)*(y-10)-(z-60)*(z-60) Text2 has spaces a5Text3"