r for loop cor.test函数

时间:2015-07-28 15:16:03

标签: r for-loop

我对R循环有一般性的一般问题: 有人可以解释一下这个错误吗?

for (i in seq(length=2:ncol(df))) { z <- cor.test(df$SEASON, df[,i], method="spearman");z}

很容易我想在名为SEASON的col与我的数据框“df”的所有col之间使用cor.test(x,y)函数。 此外,我希望在这个计算之后,R打印出结果“z”。

1 个答案:

答案 0 :(得分:1)

首先,您并不需要for()循环。您可以使用apply()函数获取SEASON与数据框df的所有其他列的相关性。

# some fake data
n <- 20
df <- data.frame(SEASON=runif(n), A=runif(n), B=runif(n), C=runif(n))

# print the correlation
apply(df[, -1], 2, cor.test, df$SEASON, method="spearman")

其次,您没有正确使用seq()功能。 length.out的{​​{1}}参数是&#34; 所需的序列长度&#34;。你继续用向量提供seq()参数,而不是它期望的标量(长度为1的向量)。这就是您提交length.out之类的内容时收到警告消息的原因。该函数只使用第一个元素,因此结果与seq(length.out=2:ncol(df))的结果相同(没有警告消息)。如果您想使用seq(length.out=2)为您提供所需的结果,请使用seq()。这很好,但我认为简单而简洁地使用seq(from=2, to=ncol(df))就像之前的海报所说的那样。

如果你真的想使用for循环,这应该可以解决问题:

2:ncol(df)