r - 从数据框中选择数字列和按名称指定的一列

标签 r scale numeric

我有一个包含数字和非数字列的数据框,比如说

df <- data.frame(v1=1:20,v2=1:20,v3=1:20,v4=letters[1:20],v5=letters[1:20])

只选择我会使用的非数字列
fixCol <- !sapply(df,is.numeric)

但现在我还想包含一个特定的数字列,比如 v2。我的数据框非常大,列的顺序发生了变化,所以我无法使用数字对其进行索引,我真的想使用名称“v2”。我试过
fixCol$v2 = TRUE

但这给了我警告 In fixCol$FR = TRUE : Coercing LHS to a list这使得我不可能对我的原始数据框进行子集化以仅获得 fixCol
df[,fixCol]

给出:Error in .subset(x, j) : invalid subscript type 'list'
最后,我的目标是缩放数据框的所有数字列,除了这个指定的列,使用类似这样的东西
scaleCol = !fixCol
df_scaled = cbind(df[,fixCol], sapply(df[,scaleCol],scale))

我怎样才能最好地做到这一点?

最佳答案

我们可以使用 OR 条件( | )来获取逻辑索引,然后对 'df' 的列进行子集化。

df1 <- df[!sapply(df, is.numeric)|names(df)=='v2']
head(df1,2)
#  v2 v4 v5
#1  1  a  a
#2  2  b  b

关于r - 从数据框中选择数字列和按名称指定的一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35360395/

相关文章:

r - 将数据导入R中的列数未知?

r - 在没有两个完整数据周期的情况下检测季节性

c++ - 如何沿任意轴缩放对象(在 3D 空间中)

c# - Unity3D局部问题

regex - 从 PostgreSQL 中的 varchar 中提取 ID 号

javascript - 具有 gettersetter 的 Angular 1.4.x 数字字段不适用于十进制数

R taskscheduleR不执行脚本

如果 R 中的 n Obs < x,则删除重复的 obs 数据

ios - 缩放任何 View 的内容并允许动画

sql - 将空字符串插入 SQL Server 的 INT 列