4

私のデータフレームでは、最初の列が因子であり、因子名の特定の値を持つ行を削除したい(値が存在する場合)。私は試した:

df <- df[-grep("factorname",df$parameters),]

これは、対象となる因子名が存在する場合にうまく機能します。ただし、factornameが存在しない場合、このコマンドはデータ フレームを破棄し、0 行のままにします。だから私は試しました:

df <- df[!apply(df, 1, function(x) {df$parameters == "factorname"}),]

問題のある行は削除されません。factornameの存在をテストし、factornameが存在する場合は行を削除するにはどうすればよいですか?

4

2 に答える 2

7

あなたが使用することができます:

df[ which( ! df$parameter %in% "factorname") , ]

(%in%複数の除外基準によりよく一般化されるため、使用されます。) 次の可能性もあります。

df[ !grepl("factorname", df$parameter) , ]
于 2013-08-12T02:46:43.667 に答える
2
l<-sapply(iris,function(x)is.factor(x)) # test for the factor variables
>l
Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
       FALSE        FALSE        FALSE        FALSE         TRUE 

m<-iris[,names(which(l=="TRUE"))]) #gives the data frame of factor variables only
iris[iris$Species !="setosa",] #generates the data with Species other than setosa 



   > head(iris[iris$Species!="setosa",])
   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
51          7.0         3.2          4.7         1.4 versicolor
52          6.4         3.2          4.5         1.5 versicolor
53          6.9         3.1          4.9         1.5 versicolor
54          5.5         2.3          4.0         1.3 versicolor
55          6.5         2.8          4.6         1.5 versicolor
56          5.7         2.8          4.5         1.3 versicolor
于 2013-08-12T03:15:18.827 に答える