Tôi đang sử dụng gsub trong R để thêm văn bản vào giữa chuỗi. Nó hoạt động hoàn hảo nhưng vì lý do nào đó, khi vị trí quá dài nó sẽ gây ra lỗi. Mã này là dưới đây:Rắc rối với gsub và regex trong R
gsub(paste0('^(.{', as.integer(loc[1])-1, '})(.+)$'), new_cols, sql)
Error in gsub(paste0("^(.{273})(.+)$"), new_cols, sql) : invalid regular expression '^(.{273})(.+)$', reason 'Invalid contents of {}'
Mã này hoạt động tốt khi số trong ngoặc (273 trong trường hợp này) là ít nhưng không phải khi nó là lớn này.
này tạo ra các lỗi:
sql <- "The cat with the bat went to town. He ate the fat mat and wouldn't stop til the sun came up. He was a fat cat that lived with a rat who owned many hats.The cat with the bat went to town. He ate the fat mat and wouldn't stop til the sun came up. He was a fat cat that lived with a rat who owned many hats."
new_cols <- "happy"
gsub('^(.{125})(.+)$', new_cols, sql) #**Works
gsub('^(.{273})(.+)$', new_cols, sql)
Error in gsub("^(.{273})(.+)$", new_cols, sql) : invalid regular expression '^(.{273})(.+)$', reason 'Invalid contents of {}'
nội dung của 'loc',' new_cols' và 'là gì sql'can bạn thực hiện một [ví dụ tái sản xuất] (http://stackoverflow.com/questions/5963269/how -to-make-a-great-r-reproducible-example/5965451 # 5965451) làm ơn? –
Bạn đang dán gì hoặc cố dán vào 'paste0'? – Parfait
Tôi thử nghiệm nó và nó hoạt động cho đến 255 và không hoạt động với các giá trị trên 255. Có lẽ 'gsub' chỉ chấp nhận' {n} 'giá trị chỉ lên đến một kích thước của một byte trong regexs ?! – FlorianSchunke