R_列名で列を削除する のバックアップ(No.2) - アールメカブ

アールメカブ


R_列名で列を削除する のバックアップ(No.2)


Rの備忘録

例えば,あるデータフレームから,複数の列を取り除きたい場合,その列番号を指定する方法と,列名を指定する方法があるが, 列一個ならいいのだが

dat <- dat[, colnames(dat) != "X"]
dat <-  read.csv("category.csv", skip = 3, header=T)
dat[1,]
colnames(dat)

ここで列名が Q1A1などの形式になっているとして,

Q <- c(1, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, 9, 10, 10, 11, 13, 13, 14, 15)  
A <- c(2, 2, 2, 4, 2, 4, 1, 1, 1, 1, 1, 3,  1,  3,  2,  1,  2,  1,  1)

列名を表す文字ベクトルを作成し

QA <- paste("Q", Q, "A", A, sep = "")

気持ちとしては

dat <- dat[, colnames(dat) != QA]

で結果を得たいのだが,そうはいかない模様.

for(i in 1:length(QA)){
 dat <- dat[ , colnames(dat) != QA[i]]
}
colnames(dat)

と,ループしないといけない?何か間違っているか?

特定の行を除きたい場合も同様

for(i in 1:length(Textname)){
 dat <- dat[dat$text  != Textname[i] , ]
}