1
我需要將數字向量y
轉換爲一個因子(使用cut2{Hmisc}
),但我想單獨爲另一個向量x
的每個值執行此操作。R - 提取 - 變換 - 替換矢量的子集:替代循環?
現在我使用的是for
循環:
x <- c(1,3,2,3,3,1,2,2,1,3,1,3,2,2,1)
y <- abs(rnorm(15))
yf <-NULL
for (i in 1:3) {
yf[x==i]<-cut2(y[x==i],g=2)
}
我很難找到不涉及一個循環的解決方案。任何人都可以提出一個解決方案,使用apply
或甚至更好的矢量化解決方案?任何有識之士將非常感謝!
編輯: 我的問題歸結爲:是否有一種簡單的方法可以將函數應用於同一個向量多次,但順序地爲參數的不同值(在此定義數據組)。在我的情況的職能將是:
function(i) {
yf[x==i]<-cut2(y[x==i],g=2)
}
ave
的工作,但沒有任何其他簡單的解決方案?
什麼是這些數據。例如你想要的輸出? – Thomas
我不確定要理解你的問題。我想最終得到一個與y相同長度的整數向量'yf'。當使用'by'或'tapply'時,我最終得到了幾個子向量,但是我需要將它們分配給一個長度與y相同的'yf'向量。這是我沒有使用循環麻煩的一步。 – mimi