【发布时间】:2017-04-11 16:02:29
【问题描述】:
我想在 R 中使用循环进行一些计算。
我尝试assign,但仍然无法正常工作。
谁能给我一个关于如何在 R 中设置正确变量的提示,好吗?
# My data
data <- read.table(textConnection("
a1 a2
a1 1.00000000 0.4803088
a1 0.48030878 1.0000000
"), header = TRUE)
no <- 2
for (k in 1:no){
paste0("dat.",k) <- aggregate(data[,c(paste0("a",k),paste0("b",k), paste0("b",k))],list(data$id),mean)
paste0("cor.",k) <- cor(paste0("dat.mean.",k),use = "complete.obs")
paste0("cal.",k) <- as.data.frame(paste0("dat.mean.",k))
paste0("lm.",k) <- lm(paste0("a",k) ~ paste0("b",k),data = paste0("lm.cal.",k))
}
【问题讨论】:
-
paste0()返回一个字符值。您不能为字符赋值(即"apple"<-3在R 中没有意义)。您是否需要这些变量在循环后持续存在? -
谢谢,你介意给我一个简单的例子吗?然后我可以按照你的提示完成它。
-
@MrFlick 嗯。
"apple"<-3在 R 中非常有意义,并且成功执行。我完全同意 在 R 之外没有任何意义,但 R 很愚蠢并且不同意。 -
@KonradRudolph 好点。愚蠢的变量引用。有没有更好的方法来解释为什么这不起作用。
-
@MrFlick 不幸的是,不,正是由于变量引用。因此,R 中的分配规则非常不一致——至少在你理解
f(something, ...) <- value扩展为什么之前,这需要对 R 有深入的了解。最简单的方法可能是说赋值必须是一个变量,或者有一个变量作为其最左边的子表达式部分(在函数名之后)。
标签: r