r - 在 R 中,如何创建命名列表和动态生成变量的函数
问题描述
我需要一个(大量)变量的函数和一个为这些变量提供初始值的命名列表。这将用作 R 中 mle2 函数的输入。
分配对我没有帮助,因为我需要调用变量,而不仅仅是给它们值。我可以使用名称创建一个列表或向量,但我似乎无法将它们识别为变量。我已经尝试过使用和不使用 get 的代码,直接在 startlist 中尝试了 paste 命令以及许多其他类似的迭代。
# This is an example with 4 variables that works:
fun.long<-function(p1,p2,p3,p4) {
p1+p2+p3+p4}
startlist<-list(p1=0.5,p2=0.5,p3=0.5,p4=0.5)
# Since I have way more than 4 variables I'd like to automate this.
# what I had hoped for was something like:
varname<-list()
for (i in 1:4) {
varname<-cbind(varname,paste0("p", i))}
fun.long<-function(MyList) {
q=0
for (i in 1:4) {
q=q+get(MyList[i])}
return(q)}
startlist<-list()
for (i in 1:4) {
startlist<-cbind(startlist,get(varname[i])=0.5)}
我本来想fun.long(varname)
输出,p1+p2+p3+p4
而不是我得到:Error in get(varname[i]) : invalid first argument
我startlist
想要打印命令:
$p1
[1] 0.5
$p2
[1] 0.5
$p3
[1] 0.5
$p4
[1] 0.5
相反,我得到:
Error: unexpected '=' in:
for (i in 1:4) {
startlist<-cbind(startlist,get(varname[i])=
解决方案
推荐阅读
- indexing - AMPL:定义对集合的特定索引的约束
- javascript - 如何在jquery中提交带有表单的图像,其中图像标签在jquery代码中?
- javascript - 按升序对 AJAX 响应结果进行排序
- ios - CoreData 可转换:自定义转换器永远不会被调用 - 使用 NSKeyedArchiver
- vue.js - Vuejs根据商店数据在发布后有条件地重定向
- angular - NgRx:如何在 meta-reducers 中使用服务?
- java - 为什么我在 Netbeans 中没有 Web 应用程序选项?
- python - Port Tornado 应用到 gunicorn
- java - 无法调试 ProcessBuilder
- python - 如何使用 for-looped print() 结果在 pandas 的数据框中填充新列?