【发布时间】:2015-12-08 05:33:16
【问题描述】:
我正在尝试从列表中的多个数据帧创建多个测试和训练数据集。因此,我得到这个“1:nrow(df)中的错误:长度为0的参数”并且不明白如何解决它。我已经手动更新了没有 for 循环的列表,它工作正常。但由于某种原因,当我尝试使用 for 循环重复此过程时,我得到了错误。
我首先从 iris 数据集中创建了一个 3 三个迷你数据帧
x <- 3;
# split the data into 3 mini data frames
set.seed(1)
df_list<- split( as.data.frame(iris), sample(x,nrow(iris),replace=TRUE))
比一个空列表
TTdf_list <- list()
比一个需要** df_list**的函数;然后从 df_list 中的每个数据帧创建一个测试和训练。完成后,它会将其存储回 TTdf_list。
# splitdf function will return a list of training and testing sets
splitdf <- function(dataframe) {
for(i in 1:length(df_list)){
df <- df_list$'i'
# creating the logic to divide the df, train(0.70) & test (0.3)
#ind <- sample(2, nrow(df), replace = TRUE, prob =c(0.7,0.3))
#Sample Indexes
indexes <- sample(1:nrow(df), size=0.3*nrow(df))
# Split data
test = df[indexes,]
train = df[-indexes,]
TTdf_list $'i' <- list(train,test)
}
return(TTdf_list);
}
df_list<-lapply(RDD_df, splitdf)
比你
【问题讨论】:
-
df_list$'i'无法按预期工作。使用[[ -
感谢 akrun 但 df_list 正在重新调整 3 个列表,每个列表有 6 个成员?但我只想要 3 个列表,其中包含 2 个列表,即原始数据帧分为测试和训练,这个过程适用于所有这些。谢谢
标签: r