当分组变量是字符类而不是因子时,为什么R中的quickpsy需要更长的时间来适应?

当分组变量是字符类而不是因子时,为什么R中的quickpsy需要更长的时间来适应?,r,dplyr,R,Dplyr,包quickpsy有一个同名的函数,可以将心理测量函数与您提供的数据集相匹配,还可以执行引导。我注意到,当分组变量是character类时,运行时间要比分组变量是factors时长。为什么会这样 下面是一个例子来说明这一点。首先,我用分组变量“condition”作为字符变量创建一个数据帧: charData <- data.frame( condition = rep(c('pre','post'), each=6), comparison = rep(c(16, 18, 19,

quickpsy
有一个同名的函数,可以将心理测量函数与您提供的数据集相匹配,还可以执行引导。我注意到,当分组变量是character类时,运行时间要比分组变量是factors时长。为什么会这样

下面是一个例子来说明这一点。首先,我用分组变量“condition”作为字符变量创建一个数据帧:

charData <- data.frame(
  condition = rep(c('pre','post'), each=6),
  comparison = rep(c(16, 18, 19, 21, 22, 24), 2),
  nGreater = c(2, 8, 16, 26, 34, 38, 0, 6, 12, 24, 32, 36),
  nTrials = rep(40, 12),
  stringsAsFactors = FALSE)
在我的机器上运行quickpsy功能需要约7秒钟,并显示一个进度条:

charpsy <- quickpsy(charData, comparison, nGreater, nTrials, .(condition), B=100)
# |==============================================================================|100% ~0 s remaining
factorpsy <- quickpsy(factorData, comparison, nGreater, nTrials, .(condition), B=100)
现在quickpsy的运行速度要快得多,它甚至不显示进度条:

charpsy <- quickpsy(charData, comparison, nGreater, nTrials, .(condition), B=100)
# |==============================================================================|100% ~0 s remaining
factorpsy <- quickpsy(factorData, comparison, nGreater, nTrials, .(condition), B=100)

factorpsy它是数据类型的属性。一个因子作为一个整数存储在下面(每个不同的条件一个唯一的整数),函数/此类特别利用了这样一个事实,即条件的类型可能比数据帧中的行少得多。本质上,只要您想使用字符类型变量作为分组,就应该将其存储为因子,因为这是大多数分析函数所期望的。这样的函数甚至可以在进行分析之前先将字符列转换为因子。
factorpsy <- quickpsy(factorData, comparison, nGreater, nTrials, .(condition), B=100)