【发布时间】:2014-12-12 01:54:10
【问题描述】:
我想只保留每个字符串的前半部分。导入的数据与名字重复,目前都在一个更大的数据框中:
姓名:TimmyTimmy、PopPop、AdnanAdnan、KobeKobe。
第一个想法是计算字符数 / 2,然后使用 gsub 替换该字符数,通过计算我想从每个字符串的开头删除的字符数,使用 fn_len 作为模式中的变量。
fn_len:5、6、5、4
df$fname <-
gsub("^[[:alpha:]]{df$fn_len}", "", df$fname)
返回错误:无效的正则表达式;原因“{} 的内容无效”
如果我使用单个数字(例如 1、2、3、4、5),但显然不了解此处的某些模式规则,则代码可以工作。
或者,可能有更好的方法从一开始就做到这一点?
【问题讨论】:
-
通常,R 会将
""之间的任何内容解释为字符数据。df$fn_len不会被解释/替换为变量的值。在这种情况下,您需要使用paste或paste0或类似的东西,但从那里传递给gsub会变得复杂 -substr是您最好的选择。 :-)