1. ホーム
  2. r

[解決済み】 .subset2(x, i, exact = exact)のエラー:Rの添え字が範囲外である。

2022-02-17 16:48:43

質問

データフレームから特定の数値列をループ処理しようとしています。 cor.test"関数を使用して相関関係とp値を抽出します。

相関は、以下の直線関係を計算することです。 0 と 1 の値からなる 1 つのカテゴリ変数と各数値列との関係。

ここまでが私のコードです。

## data ##
names <- c("John", "Greg", "Maria", "Josh", "Emma")
categorical_column <- sample(0:1, 5, replace = TRUE)
numeric_column_1  <- sample(1:30, 5, replace = TRUE)
numeric_column_2 <- sample(1:40, 5, replace = TRUE)

sampled_df <- data.frame(names, categorical_column, numeric_column_1,
                         numeric_column_2)


## specific columns ##

numerical_columns <- c("numeric_column_1", "numeric_column_2")


## for-loop task ##

for(i in seq_along(numerical_columns)){
      
       correlation_num_df <- structure(list(
                         
       variable <- numerical_columns,
                        
       correlation <- cor.test(sampled_df[numerical_columns[i]][[i]],
                       sampled_df[["categorical_column"]])[["estimate"]][["cor"]],
                        
       p_value <- cor.test(sampled_df[numerical_columns[i]][[i]],
                      sampled_df[["categorical_column"]])[["p.value"]]
      ),
    
     class = "data.frame",
     
     nrow = c(NA, -2L))
      
   
}



コンソール出力です。

Error in .subset2(x, i, exact = exact) : subscript out of bounds

圏外にあるサブセットを知るにはどうしたらよいのでしょうか?また、どのようにそれを修正すればよいのでしょうか?

どのように解決するのですか?

を使用することができます。 across と共に summarise

library(dplyr)
library(broom)
out <- sampled_df %>% 
   summarise(across(all_of(numerical_columns), 
     ~list(cor.test(., categorical_column) %>% 
             tidy %>% 
             select(estimate, p.value))))

unclass(out) %>%
      bind_rows(.id = 'grp')
# A tibble: 2 x 3
#  grp   estimate p.value
#  <chr>    <dbl>   <dbl>
#1 1        0.408   0.495
#2 2        0.343   0.572