我是R编程中的新手,遇到一个简单的问题,但找不到任何解决方案。
在其他编程语言中,可以在循环中生成递增命名的变量。这可能在R?怎么样?
例如,我想在每次循环完成时将操作的输出保存到新变量中:
for(i in 1:5) {
var_[i] <- i + pi
}
通过这种方式,我最终会得到var_1
,var_2
,...,var_5
。
提前感谢您的帮助。
答案 0 :(得分:5)
你正在尝试的文字版本在R中通常被认为是不好的做法。
我们通常避免创建大量孤立的数据结构。将它们全部放在列表中然后设置它们的名称属性要清晰得多:
x <- vector("list",5)
for (i in seq_len(5)){
x[[i]] <- i + pi
}
names(x) <- paste0("var_",1:5)
然后你会通过以下内容来引用它们:
x[["var_1"]]
答案 1 :(得分:2)
虽然这在R中是可能的,但是非常气馁。最好使用命名列表或向量或累积结果。例如,您可以将它们存储为矢量。
myvar<-1:5+pi
# myvar[1] == 4.141593
# myvar[5] == 8.141593
或者如果你想创建一个列表,你可以使用
myvar <- lapply(1:5, function(x) {x+pi})
names(myvar)<-paste("var", 1:5, sep="_")
# myvar[["var_1"]] == myvar[[1]] == 4.141593
但如果你真的需要创建一堆变量(而你没有),你可以使用assign()
函数