0

我在 R 中编写了以下代码:用户选择一个包含 2 列(V1 和 V2)的文件,其中包含许多行(行数会因输入文件而异)脚本计算 2 个变量之间关系的 rsq。根据输入文件,可以有 10 到 1000 行数据。

我想编写以下代码:代码应该遍历所有行,一次删除/省略/忽略一行,并在缺少该行的情况下计算新的 rsq。因此,例如:

有 10 行数据,总 rsq = 0.97 Step1:从方程中删除第一行数据 再次计算 rsq,但这次是 9 行,得到 rsq = 0.98。
Step 2: 重新添加第 1 行并删除第 2 行 rsq 再次计算 Step 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 回答