Bir data.frame dosyasında iki sütun değiştirmek istiyorum. Ben böyle bir şey yapabileceğini biliyorum: (?)Bir yeniden boyutlandırma olmadan bir veri çerçevesindeki sütun konumlarını değiştirme
dd <- dd[c(1:4, 6:5, 7:10)]
Ama bulmak o inelegant, potansiyel olarak yavaş ve olmayan bir program dostu (siz takas sütunlar yakınsa bazı durumlarda bile length(dd)
biliyorum ve gerekiyorsa veya Bu değere değil ...) Tüm veri çerçevesini yeniden atamadan bunu yapmanın kolay bir yolu var mı? [ <-
yalnızca değerleri değil, nitelikleri ile ilgilidir çünkü
dd[2:3] <- dd[3:2]
çok "kayıplı" olduğu ortaya çıktı.
(dd <- data.frame(A = 1:4, Does = 'really', SO = 'rock'))
dd[3:2]
dd[2:3] <- dd[2:1]
print(dd)
sütun adları açıkça çevrilmiş değildir ...
Herhangi fikri: Yani örneğin? Çok uzun bir listeye küçük bir özel işlev ekleyebilirim ama grrr ... bir yol olmalı. ;-)
'data.table' pacakge, sütunların yeniden düzenlenmesinin yeniden sıralanması için yeniden sıralama yapmanıza izin verir, ancak sözdizimi büyük olasılıkla yaptığınız şeyden daha fazla ısınmaz - http: // s tackoverflow.com/questions/12232041/how-to-reorder-data-table-columns-without-copying – thelatemail
Ancak "setcolorder" öğesinin başvuru sırasına göre değiştiğine dikkat edilmelidir. Hiçbir kopya yapılmıyor. Yani, bu * hızlı *. – Arun
10 x 1e6 veri çerçevesindeki sütunları tersine çevirmek yaklaşık 7 ms sürer. Bu yüzden, eğer bu zaman dilimini yapmıyorsanız, kodunuzdaki tıkanıklık olması muhtemel değildir ve süratle değil, süratle ilgili endişelenmeniz gerekir. – hadley