我正在使用一个包含1900列和大约280,000行的data.table。
目前,数据完全是"整数",但我希望它们明确地"数字"所以我可以稍后将它传递给bigcor()函数。显然,bigcor()只能处理"数字"而不是"整数"。
我试过了:
full.bind <- full.bind[,sapply(full.bind, as.numeric), with=FALSE]
不幸的是,我收到错误:
Error in `[.data.table`(full.bind, , sapply(full.bind, as.numeric), with = FALSE) :
j out of bounds
所以,我尝试使用data.table set()函数,但是我得到了错误:
Error in set(full.bind, value = as.numeric(full.bind)) :
(list) object cannot be coerced to type 'double'
我创建了一个简单的可重现的例子。请注意,实际列不是&#34; a&#34;,&#34; b&#34;或&#34; c&#34 ;;它们是非常复杂的列名,因此不可能单独引用列。
dt <- data.table(a=1:10, b=1:10, c=1:10)
所以,我最后的问题是:
1)为什么我的sapply技术不起作用? (什么是&#34; j超出界限&#34;错误?) 2)为什么set()技术不是? (为什么data.table可以被强制转换为数字?) 3)bigcor()函数是否需要数字对象,还是存在其他问题?