我知道有很多这样的问题,并尝试了所提出的解决方案。但我还是无法解决以下问题。 我的目标是在R中创建一个函数,它将关联数据框中的列对。取决于成对完整观察的数量,它将使用略微不同的方法。 这里的问题是无论我尝试什么,在声明功能的同时,我不断得到:
Error: no function to return from, jumping to top level
和
Error: unexpected '}' in "}"
这是功能:
corr.loop <- function(df, varsA, varsB, normal, nonnormal) {
results <- matrix(ncol = 8)
colnames(results) <- c("varA", "varB", "type", "complete.obs.n", "estimate", "p", "lower.CI", "upper.CI")
for (i in 1:length(varsA)) {
for (j in 1:length(varsB)) {
if (
pairwise.complete.obs.n(df[, varsA[i]], df[, varsB[j]]) < 3
) {
results <- rbind(results,
c(
varsA[i],
varsB[j],
NA,
pairwise.complete.obs.n(df[, varsA[i]], df[, varsB[j]]),
rep(NA, 4)
))
} else {
type <- ifelse( (varsA[i] %in% nonnormal | varsB[j] %in% nonnormal), "spearman", "pearson")
cor.results <- ifelse(
type == "pearson",
cor.test(
x = df[, varsA[i]],
y = df[, varsB[j]],
alternative = "two.sided",
method = "pearson",
exact = TRUE,
conf.level = 0.95,
continuity = TRUE
),
cor.test(
x = df[, varsA[i]],
y = df[, varsB[j]],
alternative = "two.sided",
method = "spearman",
exact = TRUE,
conf.level = 0.95,
continuity = TRUE
)
)
if (
pairwise.complete.obs.n(df[, varsA[i]], df[, varsB[j]]) = 3
) {
results <- rbind(
results,
c(
varsA[i],
varsB[j],
type,
pairwise.complete.obs.n(df[, varsA[i]], df[, varsB[j]]),
cor.results$estimate,
cor.results$p.value,
NA,
NA
)
)
} else {
results <- rbind(
results,
c(
varsA[i],
varsB[j],
type,
pairwise.complete.obs.n(df[, varsA[i]], df[, varsB[j]]),
cor.results$estimate,
cor.results$p.value,
cor.results$conf.int[1],
cor.results$conf.int[2]
)
)
}
}
}
}
results <- as.data.frame(results[-1, ])
results[, 1:ncol(results)] <- lapply(results[, 1:ncol(results)], as.character)
results[, 4:ncol(results)] <- lapply(results[, 4:ncol(results)], as.numeric)
return(results)
}
有什么东西显而易见我错过了吗?似乎我只是需要一个新的眼睛。谢谢!
答案 0 :(得分:1)
第45行你的意思是==
而不是=