如何删除 R 中不需要的功能?
How to remove unwanted features in R?
假设我有以下 data
:
'aaa' 'a' 'aaron' 'abcde' 'azz'
x1 ... ... ... ... ...
x2 ... ... ... ... ...
x3 ... ... ... ... ...
给定一个预定义的英文单词列表,如何使用 which(.. %in% ..)
运算符获取向量位置,以便只保留预定义的英文单词列表中存在的特征?
预期输出:
'a' 'aaron'
x1 ... ...
x2 ... ...
x3 ... ...
您可以通过多种方式做到这一点。使用 which
,您可以获得所需列位置的向量,然后 select 只是所需的列:
cols <- which(colnames(data) %in% list)
data[cols]
另一种方法是使用 dplyr 的 select:
data %>% select_(.dots = list)
如果我们有名称向量,则使用 %in%
df1[,colnames(df1) %in% v1]
如果您有要保留的列名列表,您可以运行这样:
dat = dat[, colnames(dat) %in% list]
如果您有不想保留的列名列表,您可以运行这样:
dat = dat[, !(colnames(dat) %in% list)]
如果您使用的是 data.table,则必须包含 with=FALSE 才能正常工作。
dat = dat[, colnames(dat) %in% list, with = FALSE]
(@Kristofersen 昨天对问题的长回答)恰恰相反:使用逻辑向量进行索引 很好 并且更安全:我已经在上面给出了一个重要原因:“-哪个(...)”。请尝试生成这样一个 'no match' 示例并亲自查看。
第二个原因:处理(意外的)NA:如果你的逻辑向量包含 NA - which(.) 全部消除它们并且你没有注意到你的数据中有一些东西 "strange" (因为这通常是 NA 的原因一个逻辑向量。
第三个原因:当出现新的选择条件时,您可以轻松 and/or (即 &
, |
)逻辑向量。整数索引向量的等价物更容易出错((尽管你经常可以在那里使用 union() / intersect() / setdiff() ..))保持逻辑更清晰,更安全,并使用 which(.)
用于索引的逻辑向量是一种 不好的 做法,在 R 代码中的很多地方都可以看到。抱歉,我现在没有时间 "lecture"。
假设我有以下 data
:
'aaa' 'a' 'aaron' 'abcde' 'azz'
x1 ... ... ... ... ...
x2 ... ... ... ... ...
x3 ... ... ... ... ...
给定一个预定义的英文单词列表,如何使用 which(.. %in% ..)
运算符获取向量位置,以便只保留预定义的英文单词列表中存在的特征?
预期输出:
'a' 'aaron'
x1 ... ...
x2 ... ...
x3 ... ...
您可以通过多种方式做到这一点。使用 which
,您可以获得所需列位置的向量,然后 select 只是所需的列:
cols <- which(colnames(data) %in% list)
data[cols]
另一种方法是使用 dplyr 的 select:
data %>% select_(.dots = list)
如果我们有名称向量,则使用 %in%
df1[,colnames(df1) %in% v1]
如果您有要保留的列名列表,您可以运行这样:
dat = dat[, colnames(dat) %in% list]
如果您有不想保留的列名列表,您可以运行这样:
dat = dat[, !(colnames(dat) %in% list)]
如果您使用的是 data.table,则必须包含 with=FALSE 才能正常工作。
dat = dat[, colnames(dat) %in% list, with = FALSE]
(@Kristofersen 昨天对问题的长回答)恰恰相反:使用逻辑向量进行索引 很好 并且更安全:我已经在上面给出了一个重要原因:“-哪个(...)”。请尝试生成这样一个 'no match' 示例并亲自查看。
第二个原因:处理(意外的)NA:如果你的逻辑向量包含 NA - which(.) 全部消除它们并且你没有注意到你的数据中有一些东西 "strange" (因为这通常是 NA 的原因一个逻辑向量。
第三个原因:当出现新的选择条件时,您可以轻松 and/or (即 &
, |
)逻辑向量。整数索引向量的等价物更容易出错((尽管你经常可以在那里使用 union() / intersect() / setdiff() ..))保持逻辑更清晰,更安全,并使用 which(.)
用于索引的逻辑向量是一种 不好的 做法,在 R 代码中的很多地方都可以看到。抱歉,我现在没有时间 "lecture"。