51

次のような英数字のリストがあります。

x <-c('ACO2', 'BCKDHB456', 'CD444')

次の出力が欲しいです:

x <-c('ACO', 'BCKDHB', 'CD')

助言がありますか?

# dput(tmp2)

structure(c(432L, 326L, 217L, 371L, 179L, 182L, 188L, 268L, 255L,..., 
), class = "factor")
4

4 に答える 4

99

これに使用できますgsub

gsub('[[:digit:]]+', '', x)

また

gsub('[0-9]+', '', x)
# [1] "ACO"    "BCKDHB" "CD" 
于 2012-11-27T17:56:23.270 に答える
13

数字を削除するだけが目的の場合、このremoveNumbers()関数はテキストから数字を削除します。それを使用すると、間違いのリスクが軽減されます。

library(tm)

x <-c('ACO2', 'BCKDHB456', 'CD444') 

x <- removeNumbers(x)

x

[1] "ACO"    "BCKDHB" "CD"    
于 2017-05-31T19:09:11.177 に答える
11

ストリンガーを使用する

ほとんどのストリンガー関数は正規表現を処理します

str_replace_allはあなたが必要とすることをします

str_replace_all(c('ACO2', 'BCKDHB456', 'CD444'), "[:digit:]", "")
于 2020-02-05T15:14:47.300 に答える
6

stringiを使用したソリューション:

# your data
x <-c('ACO2', 'BCKDHB456', 'CD444')

# extract capital letters
x <- stri_extract_all_regex(x, "[A-Z]+")

# unlist, so that you have a vector
x <- unlist(x)

一行で解決策:

Rのスクリーンショットオンラインライナー

于 2016-10-07T09:27:29.250 に答える