rmcorr:使用变量传递列名

问题描述 投票:2回答:3

我正在尝试使用rmcorr R包进行重复样本的数据分析。 我想让它通过所有列对并估计它们的相关性。问题是rmcorr只接受不带引号的列名作为参数: >> rmcorr(Subject, PacO2, pH, bland1995) 所以,像rmcorr(colnames(bland1995)[1], colnames(bland1995)[2], colnames(bland1995)[3], bland1995)这样的表达式会抛出一个错误:

Error in rmcorr(colnames(bland1995)[1], colnames(bland1995)[2], colnames(bland1995)[3],  : 
  'Measure 1' and 'Measure 2' must be numeric

所以我希望do.call会帮助我。哈哈,胖胖

>> do.call('rmcorr', args = list(colnames(bland1995)[1], colnames(bland1995)[2], colnames(bland1995)[3], bland1995))
Error in rmcorr("Subject", "pH", "PacO2", list(Subject = c(1L, 1L, 1L,  : 
  'Measure 1' and 'Measure 2' must be numeric
In addition: Warning message:
In rmcorr("Subject", "pH", "PacO2", list(Subject = c(1L, 1L, 1L,  :
  'Subject' coerced into a factor

如何将字符串变量传递给这种函数?

r string correlation do.call
3个回答
2
投票

一种方法是使用get

rmcorr(participant = get('Subject'), 
       measure1 = get('PacO2'), 
       measure2 = get('pH'), 
       bland1995)

Repeated measures correlation

r
-0.5067697

degrees of freedom
38

p-value
0.0008471081

95% confidence interval
-0.7112297 -0.223255

2
投票

rmcorr软件包的最新更新(0.3.0)现在应该允许这样做。列名仍然可以不带引号输入,但现在也可以使用字符串动态输入。在更新后尝试您的示例:

rmcorr(colnames(bland1995)[1], colnames(bland1995)[2], colnames(bland1995)[3], bland1995)

Repeated measures correlation

r
-0.5067697

degrees of freedom
38

p-value
0.0008471081

95% confidence interval
-0.7112297 -0.223255

0
投票

到目前为止,我只出现了这只丑小鸭:

combs = combn(c(2:(ncol(bland1995))), 2)
for (i in c(1:ncol(combs))){
  j = combs[1,i]
  k = combs[2,i]
  temp = bland1995[,c(colnames(bland1995)[j], colnames(bland1995)[k], 'Subject')]
  colnames(temp) = c('tax1','tax2','Subject')
  s = rmcorr(Subject, tax1, tax2, temp)
  print(x)
}

我希望有一种更简洁的方式

© www.soinside.com 2019 - 2024. All rights reserved.