【发布时间】:2018-08-04 21:08:15
【问题描述】:
我有一个包含 185 个数据框的列表,名为 WaFramesNumeric。每个数据框都有数百列和数千行。我想编辑每个数据框,以便它保留所有数字列以及我指定的任何非数字列。
使用:
for(i in seq_along(WaFramesNumeric)) {
WaFramesNumeric[[i]] <- WaFramesNumeric[[i]][,sapply(WaFramesNumeric[[i]],is.numeric)]
}
成功地使每个数据框只包含其数字列。
我尝试用行来修改它以添加特定的列。我试过了:
for (i in seq_along(WaFramesNumeric)) {
a <- WaFramesNumeric[[i]]$Device_Name
WaFramesNumeric[[i]] <- WaFramesNumeric[[i]][,sapply(WaFramesNumeric[[i]],is.numeric)]
cbind(WaFramesNumeric[[i]],a)
}
并试图调用所有整数列的列号以及特定的列号,然后基于此进行组合:
for (i in seq_along(WaFramesNumeric)) {
f <- which(sapply(WaFramesNumeric[[i]],is.numeric))
m <- match("Cost_Center",colnames(WaFramesNumeric[[i]]))
n <- match("Device_Name",colnames(WaFramesNumeric[[i]]))
combine <- c(f,m,n)
WaFramesNumeric[[i]][,i,combine]
}
这些都返回错误,我不知道该怎么做。 WaFramesNumeric 是另一个数据框列表 (WaFramesNumeric <- WaFramesAll) 的副本,因此我也尝试从 WaFramesAll 添加特定列,但这并不成功。
感谢您提供的任何建议,如果有任何不清楚之处,我深表歉意。
【问题讨论】:
-
您对
WaFramesNumeric[[i]][,i,combine]的双逗号索引有何期待?据我所知,您使用combine填充的位置仅用于drop=或exact=,而不是整数位置。另外,如果i引用列表中的特定data.frame,为什么要在内部data.frame 索引中使用它?我认为它只是WaFramesNumeric[[i]][,combine]。 -
@r2evans 老实说,我是 R 的新手,我一直在研究这个特定问题很长时间。那是当我收到我没有指定列的错误时。我确实犯了一些错误,但我只是想在提问时展示我的思考过程。理想情况下,第一行可以添加几行以指定将列添加到仅是数字列的新框架中。
标签: r list dataframe integer multiple-columns