Jikao1919
@Jikao1919 (直 ジカオ)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

R:apply関数で行数・列数を取得する方法

Discussion

apply()の中の関数で行数または列数を取得したい

次のようなデータフレームを例にご説明します.

r
df <- data.frame(2,2,3)
df
#   X1 X2 X3
# 1  2  2  3

apply()を用いて各列の要素を順番にprint()するには,以下のようにコードします.

r
apply(df, 2, function(x){
    print(x)
})
# [1] 2
# [1] 2
# [1] 3

ここで,xdfの何行目から参照された値なのか知りたいです.すなわち,# [1] 2と出力しているところで”一行目”という情報が欲しいわけです.

発生している問題・エラー

エラーは出ませんが,実装できず困っています.

自分で試したこと

リファレンスをいくつか当たりましたが,調べ方が悪いのか全くわかりません.
また,CHat GPTも試しましたが良い結果を得られませんでした.

展望

r
library(tidyverse)
apply(df, 2, function(x){
    # apply内から行数を参照する謎の関数
    ??? %>% cat("行数は", ., "です.")
})

このようになりませんか????
forを使うより他ないのでしょうか.

0

おそらくapply( )自体がそのコンセプトから「今処理している数値の行列上の位置付け」をそもそも取得していないのではないかと思います。
なので自分でその機能を実装するしかなさそうではないかなと思います。
具体的には、外側にカウンター変数を用意して、それを操作する、という感じに。

counter <- 0

apply(df, 2, function(x){
    
    行数 <- counter として処理
    counter <- counter +1
})

この手間を考えると、やっぱりfor文だとスッキリするのでは、と思います。

1Like

Your answer might help someone💌