【问题标题】:Loop over variables in R循环R中的变量
【发布时间】:2020-01-08 12:43:06
【问题描述】:

我正在以非常重复的方式进行分析。 这是我正在做的一个例子:

par(mfcol=c(1,1))
hist(data$dPrime, probability = T, main="dPrime",xlab="")
lines(density(data$dPrime),col=2)

# Score
hist(data$Score, probability = T, main="Score",xlab="")
lines(density(data$Score),col=2)

# Score2
hist(data$Score2, probability = T, main="Score2",xlab="")
lines(density(data$Score2),col=2)

# Confidence
hist(data$Confidence, probability = T, main="Confidence",xlab="")
lines(density(data$Confidence),col=2)

我也在为不同类型的分析做同样的事情。我怎样才能在一个循环中做到这一点?我尝试了一些我从以前的帖子中看到的东西,但它不起作用。 任何建议表示赞赏。

谢谢大家。

【问题讨论】:

  • 如果您包含一个简单的reproducible example 以及可用于测试和验证可能的解决方案的示例输入,则更容易为您提供帮助。此外,您应该展示您的代码尝试并准确描述“没有工作”的内容。
  • 感谢您的评论 MrFlick。我通常会发布我的代码尝试。这次我没有,因为我认为也许其他人有更好的方法,比如使用 dplyr 或类似的东西......下次会这样做。

标签: r loops variables


【解决方案1】:

您可以编写一个循环来迭代您感兴趣的变量。

my_vars <- c("dPrime", "Score", "Score2", "Confidence")

par(mfcol=c(1,1))
for(v in my_vars) {
  hist(data[[v]], probability = TRUE, main=v, xlab="")
  lines(density(data[[v]]), col=2)
}

请务必使用data[[v]] 而不是data$v,因为$ 运算符不能真正使用字符变量。您需要使用更通用的子集。

【讨论】:

  • 效果很好,谢谢。根据我在上一篇文章中的发现,这就是我试图做的事情,但我确实在尝试 data$v,这就是它不起作用的原因。
  • 你介意我再问一个问题吗?我也在尝试不同的东西,比如: for(v in my_vars) { shapiro.test(data[[v]]) } 但它不起作用。我也试过: shapResult = matrix(6,1) for(v in my_vars) { shapResult[v] = shapiro.test(data[[v]]) }
  • “不工作”到底是什么意思?相同的循环技术应该可以工作。如果没有,您可以使用reproducible example 开始一个新帖子,以准确显示问题所在。
猜你喜欢
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 2012-03-29
  • 1970-01-01
  • 2015-08-10
  • 2022-01-12
  • 2018-06-30
  • 2013-06-12
相关资源
最近更新 更多