にもかかわらず、返さ:R:!のNAは、私は単純なデータフレーム持ってis.na
> df <- data.frame(i=c(1:20), x=c(1:10, rep(NA, 10)))
> df
i x
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
9 9 9
10 10 10
11 11 NA
12 12 NA
13 13 NA
14 14 NA
15 15 NA
16 16 NA
17 17 NA
18 18 NA
19 19 NA
20 20 NA
を私は次のように私にできる非NA部品のrownamesを抽出したい:
> rownames(df[c(1:20),][!is.na(df$x),])
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10"
これまでのところとても良いです。今は最初の行をスキップしたいのですが、何らかの理由でコマンドが同じ長さの出力を返し、NAセルも含まれています。
> rownames(df[c(2:20),][!is.na(df$x),])
[1] "2" "3" "4" "5" "6" "7" "8" "9" "10" "11"
同じサイズのベクトルを取得することは意味がありません。 上記のデータフレームで分かるように、df $ x [11]はまったくNAなので、なぜis.na()は通常取り除かなければならないのでしょうか?より具体的には、私はデータフレームの抽出を観察しようとしていますが、NAを含む行は除外しています。私はすべてのアドバイスについて満足しています!
あなたのコードに関しては、 'df'が出現するたびにフィルタリングすることを忘れてしまいます。それを動作させるには 'rownames(df [2:20、] [!is.na(df [2:20、] $ x)、])'または 'rownames(df [-1、] [! is.na(df [-1、] $ x)、]) ' –
ありがとう、これは実際に私のpuposeで完全に動作します。私は本当に/フィルタdfを指定することを忘れてしまった2番目の部分です! – oepix
これは、2から20までのデータテーブルdf [c(2:20)]のrownamesを取り、rownames(df [c(2:20)]を参照)を返し、 "11"を含むそれらのうちの最初の10個の値。大佐がrownames(df [c(2:20)、] [!is.na(df [c(2:20)、] $ x) )も同様に動作します –