【问题标题】:pass each row of a data frame of variable names (character strings) into a 'select' function, iteratively将变量名称(字符串)数据帧的每一行传递给“选择”函数,迭代
【发布时间】:2020-10-24 03:52:28
【问题描述】:

我有一个变量名称组合的数据框,每个变量名称都是较大的数字数据数据框中的列名。看起来像这样。

# A tibble: 63 x 3
   Var1                                    Var2             Var3                 
   <fct>                                   <fct>            <fct>                
 1 Combined_t2|t1_lag8                     mean_RT_200_all  dual_average_accuracy
 2 Combined_abmag_t2_lag8_minus_lag3       mean_RT_200_all  dual_average_accuracy
 3 Combined_abmag_t2_1.0_minus_lag3        mean_RT_200_all  dual_average_accuracy
 4 Combined_abwidth                        mean_RT_200_all  dual_average_accuracy
 5 Combined_abdepth                        mean_RT_200_all  dual_average_accuracy
 6 Combined_lag3vslag8_residuals           mean_RT_200_all  dual_average_accuracy
 7 Combined_lag3vslag8_stdrdized_residuals mean_RT_200_all  dual_average_accuracy
 8 Combined_t2|t1_lag8                     mean_RT_1000_all dual_average_accuracy
 9 Combined_abmag_t2_lag8_minus_lag3       mean_RT_1000_all dual_average_accuracy
10 Combined_abmag_t2_1.0_minus_lag3        mean_RT_1000_all dual_average_accuracy
# ... with 53 more rows

我需要将此数据框的每一行读入以下代码,以对这些名称所代表的变量的所有组合运行迭代因子分析。我想以逗号分隔的“引号”中传递数据帧的每一行,以便它们可以通过select 函数准备好。

Cog_data_test<-
    Data_final%>%
      select(" Combined_t2|t1_lag8", "mean_RT_1000_all", "dual_average_accuracy")
  
  data_stand <-data.frame(scale(Cog_data_test, center=TRUE, scale=TRUE))
  
  EFAResult = fa(data_stand, fm="pa", rotate = "oblimin")
  
  
  EFAResult$loadings

如果我单独输入变量名称,FA 代码可以正常工作,但由于这是一个规模问题,我创建了变量数据框。此外,这需要某种for 循环来读取数据框的每一行,从较大的数据集中选择具有这些名称的列,然后运行因子分析。真的不知道该怎么做!

【问题讨论】:

    标签: r


    【解决方案1】:

    如果您的包含所有列名的数据框都称为tmp,您可以使用pmap逐行选择列。

    library(dplyr)
    
    check_fun <- function(x) {
       Cog_data_test<- Data_final %>% select(x)
       data_stand <- data.frame(scale(Cog_data_test, center=TRUE, scale=TRUE))
       EFAResult = fa(data_stand, fm="pa", rotate = "oblimin")
       EFAResult$loadings
     }
    
    result <- tmp %>% mutate(out = purrr::pmap(., ~check_fun(c(...))))
    

    【讨论】:

      猜你喜欢
      • 2014-06-26
      • 2020-05-28
      • 2013-11-07
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 2014-11-02
      • 1970-01-01
      相关资源
      最近更新 更多