【问题标题】:R - How to convert string to variable name [duplicate]R - 如何将字符串转换为变量名[重复]
【发布时间】:2013-12-20 22:33:32
【问题描述】:

我使用“assign”创建了许多变量并为它们分配了值:

N <- 10
for(i in 1:N)
{
    #create variable names n1, ..., n'N'
    assign(paste0("name",i), data.frame(matrix(1:100, ncol=3, nrow=100)))
}

我现在需要能够访问这些变量名,但不能为它们分配任何东西;我只需要更改它们的列标题(在此应用程序中)。以下代码不起作用,但类似这样:

for(i in 1:N)
{
    #create proper column headers
    colnames(assign(paste0("name",i), ???) <- c("a","b","c")
}

我想知道用什么代替“???”或学习不同的方法。

还有其他应用程序也不涉及为变量分配任何内容。

【问题讨论】:

  • 一旦你有了一个名为foo 的变量,只需执行colnames(foo)&lt;-c('firstname','secondname')
  • 但是我如何像我一样在循环设置中写“foo”?我的意思是“foo1”、“foo2”、“foo3”等。我必须以某种方式将数字附加到“foo”。这就是问题。如果我只是做'paste0("foo",i)',那么这是一个字符串而不是变量名。
  • 你使用get('foo1')。但是,更多R-ish 的方式是使用命名列表而不是assignfor(...) {yourlist[[i]] &lt;- ...}

标签: r variables assign


【解决方案1】:

您可以执行mynames&lt;-ls("name") 之类的操作来获取名称集合并使用它,但如果这是您要走的路,最好在创建 data.frames 的同时分配 colnames使用structure,或更简单:使用N 元素创建一个list 变量,并将名称分配给列表元素(并将数据框也分配给列表元素)。

`my.list`<-list()
for (i in 1:N) {
       my.list[[i]]<-data.frame(matrix(1:100, ncol=3, nrow=100))
       names(my.list)[i]<-paste('name',i)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 2013-01-12
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多