我有这样的数据框。我生成了第四列(分类群),它结合了前三列。但是我想在字母“DC”或“PD”之后添加一个或两个零,如果nchar(df $ acno)== 5或nchar(df $ acno)== 4.那么分类列中的字符串会是两个字母(DC或PD)加6个数字加上列acs中的字符(如果有的话)。 我用“paste”或“substr”函数添加“0”它给了我类似的警告:要替换的项目数量不是替换长度的倍数。非常感谢帮助,如果有人可以帮助我一个最好的解决方案。 分类栏预计为:
taxa
DC003654-1
DC004002B
DC004007B
DC002108
DC019976-1
DC029333
PD054606-1
PD086138R
PD019986
PD229333
df = read.table(text="acp acno acs bran taxa
DC 3654 -1 3 DC3654-1
DC 4002 B 3 DC4002B
DC 4007 B 3 DC4007B
DC 2108 2.5 DC2108
DC 19976 -1 2.5 DC19976-1
DC 29333 3 DC29333
PD 54606 -1 4 PD54606-1
PD 86138 R 3 PD86138R
PD 19986 3 PD19986
PD 229333 2.5 PD229333", header=T, stringsAsFactors=F)
答案 0 :(得分:1)
这样的事情:
with(df, paste0(acp, sprintf("%06d",acno), acs) )
# [1] "DC003654-1" "DC004002B" "DC004007B" "DC002108" "DC019976-1"
# [6] "DC029333" "PD054606-1" "PD086138R" "PD019986" "PD229333"