3

Rのフレームから「fldname」というラベルの付いた列を除外したいと思いますfrm。列のインデックスがわかっている場合は、iを使用してthfrm[-i]を除外できます。除外したい列ラベル文字列またはラベル文字列のリストを指定して同じことを行う簡単な方法はありますか?i

私は解決策を考え出しました(Fhnuzoagによって修正されました):

frm[names (frm)[names (frm) != c("fldname1","fldname2")]]

frm[names (frm)[!names (frm) %in% c("fldname1","fldname2")]]

必要な文字列のリストを取得し、それらをインデックスとして使用します。「 fldname1 「fldname2」の上には不要なフィールドがあります。

言語構文が持っている簡単な解決策はありますか?

4

2 に答える 2

4

はい、否定!と を組み合わせて使用​​し%in%ます。たとえば、次を使用しirisます。

x <- iris[, !names(iris) %in% c("Sepal.Width", "Sepal.Length")]
str(x)
'data.frame':   150 obs. of  3 variables:
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
于 2012-05-25T08:06:17.303 に答える
1

違うと思う。通常、私はそうしますfrm[, setdiff(names(frm), excludelist)]

于 2012-05-25T08:07:13.637 に答える