【发布时间】:2017-01-14 23:56:18
【问题描述】:
对 R 很陌生,我正在尝试子选择某些列以将它们的 NA 设置为 0。
目前为止:
col_names1 <- c('a','b','c')
col_names2 <- c('e','f','g')
col_names <- c(col_names1, col_names2)
data = fread('data.tsv', sep="\t", header= FALSE,na.strings="NA",
stringsAsFactors=TRUE,
colClasses=my_col_Classes
)
setnames(data, col_names)
data[col_names2][is.na(data[col_names2])] <- 0
但我不断收到错误
`[.data.table`(`*tmp*`, column_names2) 中的错误:当 i 是 data.table(或字符向量)时,x 必须是键控(即已排序,并且,标记为已排序)所以data.table 知道要加入哪些列并利用 x 被排序。先调用setkey(x,...),见?setkey。
我相信这个错误是说我的订单有误,但我不知道该怎么做?
【问题讨论】:
-
只是一个简短的说明,但
fread返回一个数据表。由于您是 R 新手,我可以想象您实际上想要一个数据框。如果是这样,在fread中指定data.table = FALSE。另外,请记住,缺失值与 0 不同......根据您的操作,这可能会导致偏差。
标签: r null subquery data.table