değiştirir, ben olağanüstü bir satır bulundu. split(x,g)
'un bir listeyle sonuçlanmasını bekledim, ancak daha sonra atanmış ancak atılmış olabilir. Sorum şu: Neden x
değeri değişiyor? Sadece a
değiştiAtama <code>ave</code> işlevi aracılığıyla Looking değişken
a <- data.frame(id=c(1,1,2,2), value=c(4,5,7,6))
# id value
# 1 1 4
# 2 1 5
# 3 2 7
# 4 2 6
split(a,a$id) # Split a row-wise by id into a list of size 2
# $`1`
# id value
# 1 1 4
# 2 1 5
# $`2`
# id value
# 3 2 7
# 4 2 6
# Find the row with highest value for each id
lapply(split(a,a$id),function(x) x[which.max(x$value),])
# $`1`
# id value
# 2 1 5
# $`2`
# id value
# 3 2 7
# Assigning to the split changes the data.frame a!
split(a,a$id)<-lapply(split(a,a$id),function(x) x[which.max(x$value),])
a
# id value
# 1 1 5
# 2 1 5
# 3 2 7
# 4 2 7
, ancak atama sağ tarafındaki gibi görünmüyor bir değere değişti:
Başka bir örnek daha iyi açıklayabilir! split(a,a$id)
'a bir şekilde atama, bir şekilde a
'u (anlamadığım) değiştirirse, neden list
yerine data.frame
sonuçlanır?
Bu görevi gerçekleştirmenin daha iyi yollarının olduğunu anladığımı unutmayın. Sorumaneden a
değiştir?
Aradığınız işlev "split <-", "split" değil. Onlar iki farklı fonksiyon. 'Böl <-.' Seçeneğine bakın ve 'a' nin neden değiştiğini anlıyoruz. –
Ve işlevin adı bir işleç içerdiğinden, işlevi yazdırmak için arka alıntılar kullanmanız gerekir: '\' split <-. Default \ ''. –
Bu durumda, ilgili işlev "\" split <-. Data.frame \ '' değil miydi? – nograpes