【问题标题】:Manipulate array referenced from a list - R操作从列表中引用的数组 - R
【发布时间】:2020-05-15 00:44:48
【问题描述】:

如何操作使用列表中的名称引用的数组?

例如,我将如何添加一个新列并通过从列表中引用它们来为数组 ab 赋值?如本例所示:

a = data.frame(v1 = seq(1,5), v2=seq(1,5))
b = data.frame(v1 = seq(2,5), v2=seq(2,5))

list = c("a", "b")

for(i in list){
  # print array
  print(get(i))

  # or create copy and assign value
  j=get(i)
  j$v3 = 1
}

【问题讨论】:

  • 使用可以通过括号访问列表中的特定项目。这是一个简短的教程:dummies.com/programming/r/…
  • 嗨,谢谢,但我相信这只会让我引用字符 "a""b" 而不是底层数组

标签: r arrays list data-manipulation


【解决方案1】:

首先,不要使用函数(如列表)作为变量名。那真的是一个禁忌。 如果您想将 a 和 b 保存在列表中,您需要这样做:

 your_list <- list("a" = a,
                   "b" = b)

你想遍历列表的名称

for(i in names(list)){
   # print array
   print(your_list[[i]]) # you need two [ when referencing on a list

   # or create copy and assign value
   j <- your_list[[i]]
   j$v3 <- seq(1:nrow(j))
   assign(i,j)
}

【讨论】:

  • 谢谢,我不会选择它以这种方式工作,但是外部函数 getSymbols() 创建一组 xts 对象,其中包含您传递的股票名称。因此,我有一个数组对象列表,但只有它们的字符名称,并且它们没有链接到底层对象。
  • 所以你有变量 a,b,... 和一个列表,它只包含 "a","b",... 但没有链接到实际变量,我说得对吗?如果是这样,请尝试在循环结束时分配 (i,j)
猜你喜欢
  • 1970-01-01
  • 2017-09-03
  • 1970-01-01
  • 2017-01-11
  • 1970-01-01
  • 2011-01-08
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多