0

R で次のようにコーディングしました: ユーザーは、2 つの列 (V1 と V2) と多数の行を含むファイルを選択します (行数は入力ファイルによって異なります)。スクリプトは、2 つの変数間の関係の rsq を計算します。入力ファイルに応じて、10 行から 1000 行のデータが存在する可能性があります。

次のコードを作成したい: コードはすべての行をループし、一度に 1 行ずつ削除/省略/無視し、この行が欠落している新しい rsq を計算する必要があります。たとえば、次のようになります。

10 行のデータがあり、合計 rsq = 0.97 ステップ 1: 最初の行のデータが方程式から削除されます rsq が再度計算されますが、今回は 9 行の場合、rsq = 0.98 が得られます。
ステップ 2: 1 行目が追加され、2 行目が削除されます rsq が再計算されます ステップ 3: 2 行目が再追加され、3 行目が削除されます rsq が再計算されます

各ループの後、削除された行の隣の新しい列に「新しい rsq」が配置されます。

誰でもこれを行う方法をアドバイスできますか? これをExcelでコーディングしましたが、うまく機能しますが、面倒なので理想的ではありません.

4

1 に答える 1

1

このようなことをしたいですか?

# Make some sample data
set.seed(1095)
data <- data.frame( V1 = 1:10 , V2 = sample.int(5 ,10 ,repl = TRUE ) )

# Use sapply to get r2 removing each row at a time
r2 <- sapply( 1:nrow(data) , function(x) ( cor( data[-x,1] , data[-x,2] ) )^2 )
# Combine into a data frame
newdata <- cbind( data , r2 )
newdata
#      V1 V2        r2
#   1   1  5 0.2526316
#   2   2  3 0.4657601
#   3   3  5 0.3204721
#   4   4  5 0.3691612
#   5   5  1 0.5405405
#   6   6  3 0.3769480
#   7   7  3 0.3840426
#   8   8  2 0.3409425
#   9   9  1 0.2725806
#   10 10  3 0.4986702
于 2013-04-11T12:36:45.430 に答える