2

列名がすべて「BT549-[番号]」のマトリックスがあるため、BT549-0、BT549-1などです。BT549-プレフィックスを削除して番号のみを保持しようとしています。これまでのところ、名前をハイフンで分割することは問題なく機能しますが、文字列を削除することはより困難であることがわかっています。たとえば、行列の名前が dset の場合、

a <- strsplit(colnames(dset), "-")
b <- unlist(a)

head(b)
[1] "BT549" "0"     "BT549" "10"    "BT549" "11" 

文字列を分割し、for ループを使用して各文字列の 2 番目のインデックスを保持しようとしました。

a <- for(i in colnames(dset)) {
       unlist(strsplit(colnames(dset[i]), split='-', fixed=TRUE))[2]
     }
# Error in strsplit(colnames(dset[i]), split = "-", fixed = TRUE) : 
#   non-character argument

しかし、私はこのエラーを理解していません。これを行う簡単な方法があると思いますが、私は考えていません。すべてのアドバイスは非常に高く評価されています。ありがとう。

4

2 に答える 2

2

あなたの唯一の目的が「BT549-」を削除することである場合、私の解決策は機能するはずであり、悪用しませんstrsplitが、より簡単にstringr::str_replace_all.

library(stringr)

colnames(dset) <- str_replace_all(colnames(dset), "BT549-", "")
于 2014-05-17T15:11:16.980 に答える