重新排序数据框列,同时忽略未识别的列

ari*_*ell 6 r dataframe

我认为必须有一个更好的方法来做到这一点.

我正在尝试重新排序数据框中的列.我有一个列表,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) 
    }
}
Run Code Online (Sandbox Code Playgroud)

Sha*_*ane 13

你不能这样做吗?

ordered.colnames <- ordered.colnames[ordered.colnames %in% colnames(dataset)]
Run Code Online (Sandbox Code Playgroud)