Rにリストまたはデータフレームがあり、行インデックスを取得したい場合、どうすればよいですか?つまり、特定のマトリックスが何行で構成されているかを知りたいのです。
私はあなたの質問を行番号の取得に関するものと解釈しています。
as.numeric(rownames(df))
を試すことができます。それ以外の場合は、1:nrow(df)
のシーケンスを使用します。which()
関数は、TRUE/FALSE行インデックスを行番号に変換します。正確に何をしようとしているのかは明確ではありません。
データフレームの行を参照するには、df[row,]
を使用します
何かのベクトルの最初の位置を取得するには、match(item,vector)
を使用します。この場合、ベクトルはデータフレームの列の1つになります。たとえば、列名がcnameの場合はdf$cname
です。
編集:
これらを組み合わせるには、次のように記述します。
df[match(item,df$cname),]
一致するとリストの最初の項目が得られるため、一意の参照番号を探していない場合は、他のものを検討することをお勧めします。
?base::row
のrow
を参照してください。これにより、マトリックスに似たオブジェクトの行インデックスが得られます。
私はあなたの質問を理解している場合は、データフレーム(またはリスト)の項目にアクセスできるようにしたいだけ行ごと:
x = matrix( ceiling(9*runif(20)), nrow=5 )
colnames(x) = c("col1", "col2", "col3", "col4")
df = data.frame(x) # create a small data frame
df[1,] # get the first row
df[3,] # get the third row
df[nrow(df),] # get the last row
lf = as.list(df)
lf[[1]] # get first row
lf[[3]] # get third row
等.
おそらく、この「補完」の補完的な例が役立つでしょう。
2つのデータセットがある:
first_dataset <- data.frame(name = c("John", "Luke", "Simon", "Gregory", "Mary"),
role = c("Audit", "HR", "Accountant", "Mechanic", "Engineer"))
second_dataset <- data.frame(name = c("Mary", "Gregory", "Luke", "Simon"))
名前列にコレクション全体で(コレクション全体で)一意の値のみが含まれている場合、一致によって返されるインデックスの値によって他のデータセットの行にアクセスできます
name_mapping <- match(second_dataset$name, first_dataset$name)
matchは、2番目の名前からfirst_datasetの名前の適切な行インデックスを返します。5 4 2 1
の例-最初のデータセットからの行インデックス(指定された名前の値)によるロールへのアクセス
for(i in 1:length(name_mapping)) {
role <- as.character(first_dataset$role[name_mapping[i]])
second_dataset$role[i] = role
}
===
second dataset with new column:
name role
1 Mary Engineer
2 Gregory Mechanic
3 Luke Supervisor
4 Simon Accountant