我正在尝试将数据集拆分为两个随机片段,而我的代码无效

时间:2014-02-09 07:05:26

标签: r for-loop dataframe subset

我正在尝试执行这个简单的任务,所有变量都已正确初始化,但由于某种原因,这不起作用。我做错了什么?

for(i in 1:117) 
  {x = runif(1,0,1)
   if(x<0.5) 
     testframe = rbind(utilities[i,]) 
   else 
     trainframe = rbind(utilities[i,])}

2 个答案:

答案 0 :(得分:2)

在循环中,在每次循环运行中都会覆盖testframetrainframe。你可以使用testframe <- rbind(testframe, utilities[i, ]),但效率很低。

这是另一种没有循环的方法:

x <- sample(c(TRUE, FALSE), 117, replace = TRUE)

testframe <- utilities[x, ]
trainframe <- utilities[!x, ]

您还可以创建包含两个子集的列表(基于向量x):

split(utilities, x)

答案 1 :(得分:0)

如果您坚持使用for循环,您始终可以将结果保存为空列表并将项目添加到该列表中:

这是未经测试的示例(因为我没有“实用程序”数据):

testframe <- list()
trainframe <- list()

for(i in 1:117) 
  {x = runif(1,0,1)
   if(x<0.5) 
     testframe[i] <- utilities[i,] ##whatever you want to save here
   else 
     trainframe = utilities[i,]
}

希望这有帮助