当r中有特殊字符时,写出字符值插入缩进

问题描述

我正在处理字符值,需要将它们写出来。这是我的示例值的样子:

items <- c("A1","A2","A3","A4","A5")
group <- c(paste0("Items = ",paste0(items,collapse=","),";"),#Items
           paste0(paste0("Codes(",items,") = 0(0),1(1)",collapse="; ",sep=""),#Codes
           paste0(paste("Model(",") = 2PL",";"))

> group
[1] "Items = A1,A2,A3,A4,A5;"                                                                                            
[2] "Codes(A1) = 0(0),1(1); Codes(A2) = 0(0),1(1); Codes(A3) = 0(0),1(1); Codes(A4) = 0(0),1(1); Codes(A5) = 0(0),1(1);"
[3] "Model(A1) = 2PL; Model(A2) = 2PL; Model(A3) = 2PL; Model(A4) = 2PL; Model(A5) = 2PL;"    

cat(group,file = "test.irtpro")

当我写出来的时候,一切都在一行上。但是,当结尾有;时,我需要特别注意。所以写在输出文件中的期望输出应该是:

Items = A1,A5;                                                                                            
Codes(A1) = 0(0),1(1); 
Codes(A2) = 0(0),1(1); 
Codes(A3) = 0(0),1(1); 
Codes(A4) = 0(0),1(1); 
Codes(A5) = 0(0),1(1);
Model(A1) = 2PL; 
Model(A2) = 2PL; 
Model(A3) = 2PL; 
Model(A4) = 2PL; 
Model(A5) = 2PL;

关于如何实现这一目标的任何想法?

谢谢

解决方法

也许您可以尝试:

cat(unlist(strsplit(group,"(?<=;\\s)",perl = TRUE)),file = "test.irtpro",sep = "\n")

这将按分号分隔字符串(保留分号,但以后留空格),并在每次分隔时使用换行符\n

test.irtpro

Items = A1,A2,A3,A4,A5;
Codes(A1) = 0(0),1(1); 
Codes(A2) = 0(0),1(1); 
Codes(A3) = 0(0),1(1); 
Codes(A4) = 0(0),1(1); 
Codes(A5) = 0(0),1(1);
Model(A1) = 2PL; 
Model(A2) = 2PL; 
Model(A3) = 2PL; 
Model(A4) = 2PL; 
Model(A5) = 2PL;