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在这里是合适的,因为我想添加一个不输出列表的变量,但也许我错了?
任何意见表示赞赏,
理查德
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)
| 归档时间: |
|
| 查看次数: |
1120 次 |
| 最近记录: |