【发布时间】:2015-04-20 03:39:37
【问题描述】:
我想循环并创建几乎相同命名的数据集。我有数据集 df.1 和 df.2 开始,但以下命令一直失败:
for (x in 1:2) {
df.x
}
我要做的是创建一个摊销表。使用for 循环,这似乎相对容易,但似乎每个人都建议在索引数据帧时使用表。有人对我如何工作有任何想法吗?我对lapply 或任何list 函数非常陌生。
【问题讨论】:
我想循环并创建几乎相同命名的数据集。我有数据集 df.1 和 df.2 开始,但以下命令一直失败:
for (x in 1:2) {
df.x
}
我要做的是创建一个摊销表。使用for 循环,这似乎相对容易,但似乎每个人都建议在索引数据帧时使用表。有人对我如何工作有任何想法吗?我对lapply 或任何list 函数非常陌生。
【问题讨论】:
您最好手动或通过ls() 抓取您的工作区以找到data.frames,将它们放在一个列表中并从那里开始工作。
x <- 1:5
y <- letters[x]
z <- c(T, T, T, T, F)
# put the elements into a list
your.list <- lapply(ls(), FUN = get)
# calculate length of each list element
lapply(your.list, FUN = length)
# anonymous function
lapply(your.list, FUN = function(bla) {
if (is.numeric(bla)) {
return(sum(bla))
} else {
return(NA)
}
})
不用说,您不仅限于矢量,这适用于任何对象。
【讨论】:
这有点具体到 Roman Luštrik 的回答。如果有帮助,请选择他。
df.1 <- data.frame(var = c(1,2))
df.2 <- data.frame(var = c(2,3))
for(i in 1:2) {
data <- get(paste("df.",i,sep=""))
print(data)
}
var
1 1
2 2
var
1 2
2 3
【讨论】: