我正在创建一个相当长的公式,当我尝试获取公式元素时,我发现已经插入了随机的“\ n”元素。 正则表达式工具在普通字符串上工作正常,我想我首先在创建公式时做错了。如何正确创建公式对象?如果公式表示不能改变,那将对我有所帮助,因为那时我可以停止尝试并查看其他地方。
这是一个示例公式:
myBigFormulaA <- as.formula(paste("Y ~ ",paste(seq(0,200,1),collapse="+")))
我尝试过Reduce / deparse:
Reduce(paste, deparse(myBigFormulaA))
其中概述了插入了一些空格:
[1] "Y ~ 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 +
18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 +
36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53
+ 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 +
72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89
+ 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + 100"
我也试过regexp:
gsub(" ", "", as.character(myBigFormulaA)[3])
这清楚地表明插入了“\ n”:
"0+1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+
35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+
67+68+69+70+71+72+73+74+75+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+
99+100+101+\n102+103+104+105+106+107+108+109+110+111+112+113+114+115+116+117+118+119+120+121+122+
123+124+125+126+127+128+129+130+131+132+133+134+135+136+137+138+139+140+141+142+143+144+145+146+
147+148+149+150+151+152+153+154+155+156+157+158+159+160+161+162+163+164+165+166+167+168+169+170+
171+172+173+174+175+176+177+178+179+180+181+182+183+184+\n185+186+187+188+189+190+191+192+193+
194+195+196+197+198+199+200"
非常欢迎任何有关如何处理此行为的指示。
答案 0 :(得分:4)
我用过
safeDeparse <- function(x,collapse=" ") {
paste(deparse(x),collapse=collapse)
}
执行此任务。您可以几乎通过增加width.cutoff
的{{1}}参数来做到这一点,但是上限为500,这对您的示例不太有效(叹气 - 我不知道为什么这个硬编码限制不能增加到更大的范围,例如2000 ......)