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。我會發佈一個答案,告訴你應該怎麼做 –