【发布时间】:2018-03-31 11:06:34
【问题描述】:
我遇到了一个特殊的问题。我有一个数据框,我需要将所有 3 和 5 分别替换为 0 和 1。
所以我这样做:
labels = ifelse(labels[1,] == 3, 1, 0)
运算前后的行数为1,运算前后的列数为11552。
现在我将它传递给下面给出的函数:
train <- function(data, labels) {
#browser()
shuffle <- sample(ncol(labels))
labels <- labels[,shuffle]
data <- data[,shuffle]
for(i in seq(1:ncol(data))) {
## .. something here ..
y = labels[1,i] #LINE THAT THROWS ERROR -LINE 1
## ..something ..
}
return(theta)
}
标记的线 LINE 1 抛出一个错误说:
Error in labels[1, i] : incorrect number of dimensions
在上面的函数中data 和labels 具有相同的列数。出现此错误的原因可能是什么?
【问题讨论】:
-
你的第一条语句把
labels变成了一个向量,所以你不能二维访问它。 -
@AndrewGustar 是的。您可以将此作为答案。
-
试试
labels <- labels[,shuffle, drop = FALSE]...以后要小心这个常见的陷阱!
标签: r