Bu başlık kafa karıştırıcı olsaydı özür dilerim, ancak bu sorunun nasıl söyleneceğini tam olarak anlayamıyorum, bu yüzden bulamıyorum. doğru işlev. Ben articles
vektör karşılık gelen indeksi ile DF $ x tüm değerleri değiştirmek istiyorR: bir veri çerçevesindeki değerleri eşleşen bir vektörün dizinleriyle değiştirin
articles <- c(237, 278, 354, 600)
ind <- seq(1, length(articles))
DF <- data.frame(x=c(237, 237, 278, 278, 278, 354, 600, 600, 600),
y=rnorm(9))
:
Temelde, bu derler. olduğu gibi, ben 2
vb olmayı 1
ve 278
olmak 237
istiyorum
Ben döngü için yerleşik yapar, ama benim gerçek data.frame çok daha büyüktür ve daha olmalı gibi hissediyorum Bunu başarmanın etkili yolu.
for (i in 1:length(articles)) {
DF[DF$x==articles[i], 1] <- ind[i]
}
Ben replace
işlevi baktım ama bunu yapmak için görünmüyor: Eğer istediğim her sonuç görebilirsiniz böylece İşte benim için döngü vardır. Ayrıca, gerçekte, bu bir data.frame değil, bir data.table ({data.table} paketinden) 'dir. Açıkçası bunu gerekirse bir data.frame'e dönüştürebilirim, ancak eğer data.table paketinde bunu yapmak için daha verimli bir yol varsa harika olurdu.
Çok teşekkürler. Seth
Eğer bir data.table ise, o zaman 'DF [, ind: = eşleşme (x, articles)]' veya daha fazla 'artDT = data.table (x = items) [, idx: = .I] ; DF [artDT, idx: = i.idx, on = "x"] ' – Frank