如何将id变量添加到R中的多个数据集

Ric*_*ard 3 variables loops r dataset

使用R,我想在一些数据集中添加一个计数器变量(id变量).例如,我有两个数据集x.df和y.df:

x1   <- c(1,3,5,7)
x2   <- letters[1:4]
x.df <- as.data.frame(cbind(x1, x2))

y1   <- c(100,200,300,400,500)
y2   <- c(letters[22:26])
y.df <- as.data.frame(cbind(y1, y2))
Run Code Online (Sandbox Code Playgroud)

对于这些数据集,我想添加一个id变量"id":

datasets <- c("x.df","y.df")

for (i in datasets) {
  i$sortid <- c(1:nrow(i))
}
Run Code Online (Sandbox Code Playgroud)

这会导致错误:

1中的错误:nrow(i):长度为0的参数

我想,是什么原因造成的错误,建议在这里布赖恩·迪格斯,谁注意到:我是一个字符串; 你想要在i中保存名称的对象.这是get()函数.

但是,我不确定如何将get函数应用于"数据集"的元素.另外我不认为lapply在这里是合适的,因为我想添加一个不输出列表的变量,但也许我错了?

任何意见表示赞赏,

理查德

Hon*_*Ooi 8

for (i in datasets)
{
    d <- get(i)
    d$sortid <- 1:nrow(d)
    assign(i, d)
}
Run Code Online (Sandbox Code Playgroud)

但真正的答案是将数据集包装在一个列表中:

dfs <- lapply(list(x.df, y.df), function(d) {
     d$sortid <- 1:nrow(d)
     d
})
Run Code Online (Sandbox Code Playgroud)