楼主: the_fly_winds
6618 18

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

  • 0关注
  • 1粉丝

已卖:168份资源

博士生

8%

还不是VIP/贵宾

-

威望
0
论坛币
1139 个
通用积分
4.9700
学术水平
16 点
热心指数
24 点
信用等级
14 点
经验
2333 点
帖子
106
精华
0
在线时间
264 小时
注册时间
2014-9-28
最后登录
2025-6-4

楼主
the_fly_winds 发表于 2019-1-1 22:15:00 |AI写论文
30论坛币
在一些语言中:
  1. i=1
  2. x&i=3
复制代码
这时你得到了一个新变量x1=3.

如何在R中实现这个语法?

最佳答案

jiangbeilu 查看完整内容

借用一下代码,用最直观的方式告诉你对assign是不是有什么误解?
关键词:新变量

本帖被以下文库推荐

沙发
jiangbeilu 学生认证  发表于 2019-1-1 22:15:01
the_fly_winds 发表于 2019-1-2 22:14
我很清楚我在问什么,你尝试这样的编程,你就知道我在说什么了:
生成x1:x100这100个变量,每一个xi都是 ...
借用一下代码,用最直观的方式告诉你对assign是不是有什么误解?
  1. for (i in 1:100) {
  2.   assign(paste("x", i, sep = ""), (1:i)^2)
  3. }
复制代码

藤椅
jiangbeilu 学生认证  发表于 2019-1-2 09:54:35
方法1:
  1. assign(paste0('x',i),3)
复制代码


方法2:
  1. x <- vector()
  2. x[i] <- 3
复制代码

已有 1 人评分论坛币 收起 理由
cheetahfly + 10 精彩帖子

总评分: 论坛币 + 10   查看全部评分

板凳
fyc7346165 发表于 2019-1-2 10:33:17
  1. name_list <- list("beijing","shanghai","chengdu")
  2. value_list  <- list(120,130,140)
  3. Map(assign, x = name_list, value = value_list, pos = 1)
复制代码
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 精彩帖子

总评分: 论坛币 + 10   查看全部评分

报纸
the_fly_winds 发表于 2019-1-2 11:53:17
fyc7346165 发表于 2019-1-2 10:33
不对,我需要迭代i,assign(paste)只能生成一次变量。也就是说我需要知道在r中怎么连接变量名和一个动态的变量。在x&i中,其他语言可以自行连接,而在R中&表示逻辑运算符不是连接运算符。

地板
fyc7346165 发表于 2019-1-2 14:31:51
the_fly_winds 发表于 2019-1-2 11:53
不对,我需要迭代i,assign(paste)只能生成一次变量。也就是说我需要知道在r中怎么连接变量名和一个动态的 ...
不明白哪里不对了,难道用了R还一定要用&这个符号么?
  1. ## 这是我在三楼写的方法
  2. ## 变量名x1到x10
  3. name_list <- as.list(paste("x", c(1:10), sep = ""))
  4. ## 随机生成一些数字作为value
  5. value_list <- rnorm(10)
  6. Map(assign, x = name_list, value = value_list, pos = 1)

  7. ## 这是二楼的同学提供的方法
  8. for (i in 1:10) {
  9.   assign(paste("x", i, sep = ""), rnorm(1))
  10. }
复制代码
基本上逃不掉assign函数吧
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 30 + 2 + 2 + 2 热心帮助其他会员

总评分: 论坛币 + 30  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

7
fyc7346165 发表于 2019-1-2 14:59:18
fyc7346165 发表于 2019-1-2 14:31
不明白哪里不对了,难道用了R还一定要用&这个符号么?基本上逃不掉assign函数吧
修改一下,并不需要将name_list特意转换成list
  1. name_list <- paste("x", c(1:10), sep = "")
  2. value_list <- rnorm(10)
  3. Map(assign, x = name_list, value = value_list, pos = 1)
复制代码

8
hszest 学生认证  发表于 2019-1-2 15:32:35
the_fly_winds 发表于 2019-1-2 11:53
不对,我需要迭代i,assign(paste)只能生成一次变量。也就是说我需要知道在r中怎么连接变量名和一个动态的 ...
其他语言。。您只会SAS和R了么

9
hszest 学生认证  发表于 2019-1-2 15:35:15
fyc7346165 发表于 2019-1-2 14:31
不明白哪里不对了,难道用了R还一定要用&这个符号么?基本上逃不掉assign函数吧
回答逻辑是对的,楼主自己没搞清楚

10
the_fly_winds 发表于 2019-1-2 22:12:09
hszest 发表于 2019-1-2 15:35
回答逻辑是对的,楼主自己没搞清楚
我很清楚我在问什么,你尝试这样的编程,你就知道我在说什么了:
生成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能不能做。
在VBA中x&i可以引用动态变量,在SAS中x&.i也可以,在Python中,利用'x'+str(i)也引用动态变量,在R中怎么做???

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 02:38