分配错误 - 第一个参数无效

时间:2013-11-28 08:42:09

标签: r

我正在尝试创建一个新的数据框列,并在for循环中为其赋值。

具体来说,我有一个数据框名称列表,我逐个循环遍历此列表。对于每个名称,我想为该数据框创建一个列$location,并且我想为其分配一个值。为简单起见,假设我想指定它NA。下面的代码解释了我正在尝试做什么。但是,当我运行它时,我收到错误Error in assign(get(name)$location, NA) : invalid first argument

names<-c("europe", "africa", "asia")
# where each of the strings in `names` is the name of an existing data frame object
# for sake of example, code is provided below to create example data frame objects

x <- c(2,6,7)
y <- c(40, 42, 14)
europe <- data.frame(x,y)
africa <- data.frame(x,y)
asia <- data.frame(x,y)

for (name in names) {
  assign(get(name)$location, NA)
}

我的目标是在每个数据框中获取一个名为location的新列。我不知道如何纠正这个或为什么会发生这种情况。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果您尝试使用代码,我会获得Error in get(name) : object 'europe' not found
所以我不能添加一些甚至不是对象的东西。 我会尝试类似的东西

for (k in length(names)) {
  location <- c(data1, data2)
  assign(names[k], location)
}

然后转换为您想要的格式,因此as.data.frame将在此之后起作用

编辑:玩一下(并思考)它似乎无法像这样改变列值。在帮助页Assign a value to a name in an environment.中,这不是您要实现的目标,要更改列的值,我会将此列rbind添加到数据或subs

答案 1 :(得分:-2)

for (k in names) {
    assign(names[k], cbind(names[k], data.frame(location = NA)))
}