当前位置: 首页 > 知识库问答 >
问题:

R中变量名上的循环

左丘烨烁
2023-03-14

我是最近一个R的转换者,正在努力寻找下面的R等价物:循环使用一个公共前缀加上一个数字(var1,var2,...,varn)命名的变量。

假设我有一个数据集,其中每行是一个商店,每列是该商店在第1个月、第2个月...第6个月的收入值。一些虚构的数据,例如:

store = c("a", "b", "c", "d", "c")
rev1 = c(500, 200, 600, 400, 1200) 
rev2 = c(260, 100, 450, 45, 1300)
rev3 = c(500, 150, 610, 350, 900)
rev4 = c(480, 200, 600, 750, 1000)
rev5 = c(500, 68, 750, 350, 1200)
rev6 = c(510, 80, 1000, 400, 1450)
df = data.frame(store, rev1, rev2, rev3, rev4, rev5, rev6) 
varlist <- paste("rev", 1:6)  #create list of variables rev1-rev6 #
for i in varlist {
      highrev[i] <- ifelse(rev[i] > 500, 1, 0) 
}

你能提出一个适当的方法吗?

共有1个答案

谢承颜
2023-03-14

在R中,我们通常不使用循环来进行这样的操作。您可以简单地做:

df[paste0("highrev", 1:6)] <- (df[paste0("rev", 1:6)] > 500) + 0
df
#   store rev1 rev2 rev3 rev4 rev5 rev6 highrev1 highrev2 highrev3 highrev4 highrev5 highrev6
# 1     a  500  260  500  480  500  510        0        0        0        0        0        1
# 2     b  200  100  150  200   68   80        0        0        0        0        0        0
# 3     c  600  450  610  600  750 1000        1        0        1        1        1        1
# 4     d  400   45  350  750  350  400        0        0        0        1        0        0
# 5     c 1200 1300  900 1000 1200 1450        1        1        1        1        1        1
 类似资料:
  • 我正在尝试从几个mutate(dplyr包)函数创建一个循环函数。下面的每一行代码都运行得很好,但是我正在寻找更优雅的代码(如果可能的话,在一行代码中),因为我需要再重复这五行代码10次(对于额外的10个数据帧)。 是我的Data.Frame,有5列10,000行。

  •   - r - read : rt_device_ops read_index : rt_ringbuffer read_mirror : rt_ringbuffer reader_queue : rt_pipe_device readers : rt_pipe_device recv_buf : rt_spi_message ref_count : rt_device remaining_tic

  • 问题内容: 如何使用循环命名变量?例如,如果我想让变量 double_1 = 2 , double_2 = 4 一直到 double_12 = 24 ,我该怎么写?我感觉会是这样的: 显然,这是行不通的,但是将循环号实现为变量名的正确语法是什么?我已经有一段时间没有编码了,但是我确实记得有一种方法可以做到这一点。 问题答案: 请改用字典。例如: 或者,如果您 绝对 必须 这样做 ,并且仅在完全了解

  • 我有一些变量的名字以数字结尾。现在我需要在一个循环中更改它们的值。 不是把所有的变量放入循环中,我想知道是否有一种方法可以在循环中生成变量的名称?也许是这样的? 我很确定我在什么地方见过类似的东西。做这件事最好的方法是什么?

  • 我需要构造一组变量,其中变量应基于2部分构造:a)name b)一个用value[1]加强的数字。对于不断增加的数字,我使用了for循环。我设法创建了一个字符串,参见test1,但没有增加变量名称,参见test2。 鉴于下面提供的错误代码,我假设R不希望我使用变量名中的“paste0”来构造某些东西。 我的R代码: “测试1”的结果: 我得到的test2错误是: “test2”的预期结果是:

  • 我的代码是: 这似乎不会在我的变量列表中循环。有什么想法吗?提前致谢