私はRが初めてで、ベクトル(配列?)のすべての要素から最後のn文字を削除する方法の簡単な例がオンラインで見つかりませんでした。
私はJavaのバックグラウンドから来ているので、やりたいのはa$data
のすべての要素を反復処理し、すべての要素から最後の3文字を削除することです。
どうしますか?
これが私がすることの例です。あなたが探しているものであることを願っています。
char_array = c("foo_bar","bar_foo","Apple","beer")
a = data.frame("data"=char_array,"data2"=1:4)
a$data = substr(a$data,1,nchar(a$data)-3)
aには次が含まれます。
data data2
1 foo_ 1
2 bar_ 2
3 ap 3
4 b 4
gsub
を使用する方法を次に示します。
cs <- c("foo_bar","bar_foo","Apple","beer")
gsub('.{3}$', '', cs)
# [1] "foo_" "bar_" "ap" "b"
これは@nfmcclureの回答とほぼ同じですが、名前がベースRの名前よりも一貫性と記述性に優れた関数のセットを提供するため、stringr
パッケージを使用することを好みます(実際、私は常に"how R "=の文字数を取得するには、名前nchar()
)を思い出せないためです。
library(stringr)
str_sub(iris$Species, 1, str_length(iris$Species)-3)
これにより、Species
列の各値から最後の3文字が削除されます。
stringi パッケージでも同じことが実現できます。
library('stringi')
char_array <- c("foo_bar","bar_foo","Apple","beer")
a <- data.frame("data"=char_array, "data2"=1:4)
(a$data <- stri_sub(a$data, 1, -4)) # from the first to the last but 4th char
## [1] "foo_" "bar_" "ap" "b"