1

私は適用機能をひどく手探りしてきました。単一文字値のリストがあり、母音の最初の言及を返したいと考えています。

a<- c("A","B","C","E")
b<- c("O","T","D","J")
c<- c("A","R","B","K")
d<- c("F","L","O","U")
e<- c("N","D","S","Z")

df <- data.frame(a,b,c,d,e)

その行の母音の最初のインスタンスを返す新しい列を作成したいと思います。

vow <- c("A","E","I","O","U")

結果は (A,NA?,O,E) になります。値が見つからない場合、どのように処理しますか?

4

2 に答える 2

1

これは機能し、文字が見つからない場合は警告が表示されます。これをキャッチする関数を作成することもできます。

apply(df, 1, function(x, vow) x[min(which(x %in% vow))], vow = vow)
[1] "A" NA  "O" "E"
于 2013-08-07T20:39:14.473 に答える
0
> m <- apply(df, 1, match, table=vow)
> 
> i <- apply(m, 2, function(x) na.omit(x)[1])
> 
> vow[i]
[1] "A" NA  "O" "E"

3 つのステップで:

1) 各行に一致を適用し、インデックスのテーブルを取得します (転置!)

2) 各列から最初の非 NA を取得します

3) 誓いの索引を調べる

于 2013-08-07T20:47:29.513 に答える