楼主: the_fly_winds
6576 18

[有偿编程] R怎么实现动态变量赋值 [推广有奖]

11
the_fly_winds 发表于 2019-1-2 22:14:29
jiangbeilu 发表于 2019-1-2 09:54
方法1:
我很清楚我在问什么,你尝试这样的编程,你就知道我在说什么了:
生成x1:x100这100个变量,每一个xi都是i^2一个序列。例如:
x1=c(1)
x2=c(1,4)
x3=c(1,4,9)
x4=c(1,4,9,16)
这只是一个简单的情形,不能迭代i就没法做下去。你看看assign能不能做。assign只能一次性地批量生成变量,它无法迭代。必须能迭代i才能做。
在VBA中x&i可以引用动态变量,在SAS中x&.i也可以,在Python中,利用'x'+str(i)也引用动态变量,在R中怎么做???

12
jiangbeilu 学生认证  发表于 2019-1-3 11:17:23
R里面,有三个字,可以简化你很多操作:

-- 向量化 

13
hszest 学生认证  发表于 2019-1-3 14:16:25
the_fly_winds 发表于 2019-1-2 22:14
我很清楚我在问什么,你尝试这样的编程,你就知道我在说什么了:
生成x1:x100这100个变量,每一个xi都是 ...
你看看你自己的表述能不能让人看明白吧
再说了,assign怎么就不能做了?这还用尝试???
  1. for(i in 1:4) {
  2.     assign(paste0("x_", i), seq_len(i) ** 2)
  3. }

  4. for(i in 1:4) {
  5.     print(get(paste0("x_", i)))
  6. }
复制代码

14
the_fly_winds 发表于 2019-1-3 18:52:57
hszest 发表于 2019-1-3 14:16
你看看你自己的表述能不能让人看明白吧
再说了,assign怎么就不能做了?这还用尝试???
不好意思,我可能题目出的太简单了。这个题目能够让你们进行向量化操作。如果不能够向量化而必须进行追加的话,那assign还能做吗?实际问题是生成beta1:beta30的30个变量,每一个beta都有100个数,这100个数是对一个数据集进行随机抽样后进行线性回归后的系数beta。例如beta1=c(12,32,34,21,56...),beta2=c(23,434,23,435...),这样怎么向量化?
这只能追加啊!!!assign能追加吗

15
the_fly_winds 发表于 2019-1-3 18:53:00
hszest 发表于 2019-1-3 14:16
你看看你自己的表述能不能让人看明白吧
再说了,assign怎么就不能做了?这还用尝试???
不好意思,我可能题目出的太简单了。这个题目能够让你们进行向量化操作。如果不能够向量化而必须进行追加的话,那assign还能做吗?实际问题是生成beta1:beta30的30个变量,每一个beta都有100个数,这100个数是对一个数据集进行随机抽样后进行线性回归后的系数beta。例如beta1=c(12,32,34,21,56...),beta2=c(23,434,23,435...),这样怎么向量化?
这只能追加啊!!!assign能追加吗

16
the_fly_winds 发表于 2019-1-3 18:54:13
jiangbeilu 发表于 2019-1-3 11:17
R里面,有三个字,可以简化你很多操作:

-- 向量化 
不好意思,我可能题目出的太简单了。这个题目能够让你们进行向量化操作。如果不能够向量化而必须进行追加的话,那assign还能做吗?实际问题是生成beta1:beta30的30个变量,每一个beta都有100个数,这100个数是对一个数据集进行随机抽样后进行线性回归后的系数beta。每一次抽样都能得到一个beta1~beta30. 这样抽样100次每个betai就有100个数。例如beta1=c(12,32,34,21,56...),beta2=c(23,434,23,435...),这样怎么向量化?
这只能追加啊!!!assign能追加吗

17
hszest 学生认证  发表于 2019-1-3 19:51:46
the_fly_winds 发表于 2019-1-3 18:54
不好意思,我可能题目出的太简单了。这个题目能够让你们进行向量化操作。如果不能够向量化而必须进行追加 ...
您有空不如好好看看R语言基础,您这个需求根本不需要进行变量操作,综合成为一个矩阵或者data frame之后进行操作即可。变量动态赋值和取值的函数名字我已经在答案里贴了你说的这个问题也是能够向量化处理的,lapply之类的函数麻烦您抽出宝贵的时间学习一下,谢谢!

18
fire199013 学生认证  发表于 2020-4-2 12:47:55
the_fly_winds 发表于 2019-1-3 18:54
不好意思,我可能题目出的太简单了。这个题目能够让你们进行向量化操作。如果不能够向量化而必须进行追加 ...
我也碰到了相似的问题,需要引用连续的变量,并同时对变量进行修改,查遍了也没辙。
其他人回答不出什么还觉得自己可牛逼了,真无语。

19
ZhouWei_ 发表于 2020-7-4 17:35:19
fire199013 发表于 2020-4-2 12:47
我也碰到了相似的问题,需要引用连续的变量,并同时对变量进行修改,查遍了也没辙。
其他人回答不出什么 ...
Construct a list file, and run in 2 steps, for example,
Assume a is your vector to change name, b is the list for saving the name-vector a ,
a <- vector[length=10] # add your vector for changing name
b <- mapply(list, a) # transform vector to list
for (i in 1:length(x) {
b【【i】】<- i # assign the value
}
names(b) <- a

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-6 07:52