说我想创建一个data.table,有两种情况,当我知道行数和我不知道行数时。 在第一种情况下,我找不到任何关于创建具有一定行数的空data.table的具体内容。
在第二种情况下,最好是创建一行data.table来开始或者只是高估了nrows?
编辑:是否有多行参数?
答案 0 :(得分:4)
假设您事先知道了列的类,您可以这样做:
对于空数据。表:
dt <- data.table(x=character(),y=numeric())
如果你想在你的空data.table中实际添加结果,你需要附加它们(这就是为什么制作一个空数据的原因之一。表格没有多大意义)。像这样:
dt <- rbind(dt,data.table(x=1),fill=TRUE)
对于已知行的data.table :
nrow <- 100
dt <- data.table(x=as.character(rep(NA,nrow)),y=as.numeric(rep(NA,nrow)))
或者,对于具有已知行的数据表,您可以使用@Frank的方法(我个人更喜欢这种方法,因为它略短):
dt <- data.table(x=character(),y=numeric())[1:nrow]
答案 1 :(得分:0)
# When you know the number of rows, e.g. 5 rows and 3 columns
DT = data.table(matrix(vector(), 5, 3, dimnames=list(c(), c("Date", "File", "User"))), stringsAsFactors=F)
# When you don't know the number of rows, just start with 1 and add as needed
DT = data.table(matrix(vector(), 1, 3, dimnames=list(c(), c("Date", "File", "User"))), stringsAsFactors=F)
还有其他的,可能不那么详细的方法,但我喜欢这种方法,因为你可以轻松地为其他类型data.table
切换data.frame
,但一切仍然有用。
答案 2 :(得分:0)
如果您可能希望将一个data.table列名(调用)保存到另一个data.table(undervaluedCalls)以及类类型,您可以使用以下代码:
undervaluedCalls <- as.data.table(calls)[0] # copy the column structure of calls
undervaluedCalls <- undervaluedCalls[1:10000] # add 10000 NA rows preseving column classes
列名是:
colnames(呼叫) [1]“选项”“Ticker”“Undl_Price”“Expiration”“Days_to_Exp”“Strike”“Bid”“Ask”“Mid_Price”
[10]“最后”“改变”“卷”“OI”
检查列类运行:
sapply(undervaluedCalls, class)
对我而言,这是创建新数据的最短路径。您可以在之后删除空行。