错误:“ memory_scaled”列必须是一维原子向量或列表

时间:2019-01-17 12:03:35

标签: r scale

我按比例缩放了一个具有工作记忆容量得分的向量,如下所示:

data$memory_scaled = scale(data$memory_numeric, center=T, scale=T)

然后我想使用以下方法获取原始数据的子集:

data3 = filter(data, rt < 3000)

但是它给了我以下错误:

Error: Column `memory_scaled` must be a 1d atomic vector or a list

我已经读到问题是scale()函数添加了额外的参数。确实,当我执行summary(data)时,变量名称的名称(memory_scaled.V1)带有一个额外的“ V1”。有什么方法可以使用比例变量来避免这些问题?预先感谢。

1 个答案:

答案 0 :(得分:1)

问题在于scale返回的矩阵具有两个维度。

dat <- data.frame(col1 = 1:10)
dat$col2 <- scale(dat$col1)

lapply(dat, class)
#$col1
#[1] "integer"

#$col2
#[1] "matrix"

一种解决方法是这样

dat$col2 <- c(scale(dat$col1))

现在col2是一个数字向量,即一维原子向量,dplyr::filter可以正常工作

dplyr::filter(dat, col1 < 4)
#  col1       col2
#1    1 -1.4863011
#2    2 -1.1560120
#3    3 -0.8257228