我在想必须有一种更好的方法来做到这一点。
我正在尝试对数据框中的列进行重新排序。我有一个列表ordered.colnames
,它表示新的排序-但dataset
中不存在某些列。为了避免错误“undefined columns selected
”,我将相关的切片包装在try()
函数中。
可以使用以下方法,但是有更好的方法吗?
> ordered.colnames[1:5]
[1] "lady_22102" "attentions_83249" "perseverance_17864"
[4] "cecil_84477" "cecilia_133476"
dataset.reordered = c()
for (i in 1:length(ordered.colnames)) {
col = NA
col = try(cbind(dataset[,ordered.colnames[i]]),silent=TRUE)
if (!inherits(col,"try-error")) {
colnames(col) = ordered.colnames[i]
dataset.reordered = cbind(dataset.reordered, col)
}
}
最佳答案
你不能这样做吗?
ordered.colnames <- ordered.colnames[ordered.colnames %in% colnames(dataset)]