x1=c(55,60,75,80)
x2=c(30,20,15,23)
x3=c(4,3,2,6)
x=data.frame(x1,x2,x3)
从这个功能:如何改变循环的最终结果为数据帧
NAins=function(x,alpha=0.3){
x.n=NULL
for (i in 1:ncol(x)){
S= sort(x[,i], decreasing=TRUE)
N= S[ceiling(alpha*nrow(x))]
x.n= ifelse(x[,i]>N, NA, x[,i])
print(x.n) }
}
如何最终结果保存为adataframe样子原始数据集,但是我用data.frame(x.nmar)
。 以及如何从循环中获得结果?
如果你想这样的循环方式,则需要预先定义一个矩阵或数据帧,然后填满它。循环结束后,您将需要“返回”它,因为您在该函数中创建的所有变量都将被删除。 'print'并没有被保存在任何地方。另外,在循环中运行'ceiling(alpha * nrow(x))'没有任何意义,因为它始终保持不变。如果每次只有一个选项,则不需要'ifelse'。 –
@DavidArenburg,在循环之前,我创建了具有相同长度原始数据的空数据框,但它没有任何意义。 – user5934339
因为你还没有预先定义任何东西。你只是每次给它赋值NULL。我会发布一个答案,告诉你应该怎么做 –