2016-03-29 33 views
-2
Ben değerleri atamak çalışıyorum

için veri tablosu Sayısal olmayan argüman: daima döndürülen hata R: Bir data.table seçilen satırlara ikili operatör

pt[4:108, dqv:=(ifelse(deg!=1,dr,0)+ifelse(deg==3, dr^2, 0)+1)*mp*shift(dcp, 4-deg) 
     +(shift(cv, 4-deg)*shift(dcp, 4-deg)+shift(dqv, 4-deg)*shift(ddqp, 4-deg))*fm] 

olduğunu

:

Error in (ifelse(deg != 1, dr, 0) + ifelse(deg == 3, dr^2, 0) + 1) * mp * : 
non-numeric argument to binary operator 

Bir seferde sadece 1 satır atadığımda kod çalışırdı. Örneğin:

pt[4, assignment...] 

İki satır yaparsam, 4: 5'ten atama da başarısız olur. Ayrı ayrı yapıldığında, ödev 4 ya da 5 satırları için çalışır. Bu nedenle, NA'larda veya verilerimde saklanan karakterlerde sorun olmamalıdır. Sanırım, ifelse vektörleri argüman olarak almıyor olabilir. Ancak, tanım gereği, ilk argümanında vektörleri almaktan vazgeçmez mi? Ayrıca bir data.table içindeki tüm sütunlara benzer ödevler yaptım ve işe yaradı. Belki de hatanın neden olduğu bellekte çok fazla veri kümesi var?

Neyi yanlış yaptığım hakkında bir fikriniz var mı? Teşekkürler! Ben ifelse(), denemek her zaman kötü deneyimleri

ind deg  crp  cdqp  dcp  ddfp  ccp 
1: 36 3 0.0000000 0.00000000 0.08694944 0.08819521 1.0000000 
2: 36 2 0.0000000 0.00000000 0.04128377 0.05363146 1.0000000 
3: 36 1 0.7761228 0.01107921 0.01909992 0.03213586 0.2127980 
4: 35 3 0.0000000 0.00000000 0.08949825 0.08173958 1.0000000 
5: 35 2 0.0000000 0.00000000 0.04255635 0.04956826 1.0000000 
6: 35 1 0.7483854 0.01045624 0.01970272 0.02965017 0.2411584 
     ddqp rv cv dqv 
1: 0.8248554 NA NA 0 
2: 0.9050848 NA NA 0 
3: 0.9487642 100 100 0 
4: 0.8287622 0 0 NA 
5: 0.9078754 0 0 NA 
6: 0.9506471 NA NA NA 
+1

yaptın En son şey yanlış tekrarlanabilir sağlamadan bir soru sorarak gibi görünüyor: gibi

My data.table görünüyor örnek – jangorecki

+0

Çalıştığım her şeyi hazırladım. İhtiyacın olan başka bir şey var mı? acilen yardım gerekiyor lemme biliyorum –

+0

nesne nedir? dr? – SymbolixAU

cevap

0

pt[4:108,][ deg != 1 & deg == 3, dqv:=(dr + dr^2 + 1)*mp*shift(dcp, 4-deg) 
     +(shift(cv, 4-deg)*shift(dcp, 4-deg)+shift(dqv, 4-deg)*shift(ddqp, 
     4-deg))*fm][deg == 1 & deg == 3, dqv:=(dr^2 + 1)*mp*shift(dcp, 4-deg) 
     +(shift(cv, 4-deg)*shift(dcp, 4-deg)+shift(dqv, 4-deg)*shift(ddqp, 
     4-deg))*fm][deg != 1 & deg != 3, dqv:=(dr + 1)*mp*shift(dcp, 4-deg) 
     +(shift(cv, 4-deg)*shift(dcp, 4-deg)+shift(dqv, 4-deg)*shift(ddqp, 
     4-deg))*fm][deg == 1 & deg != 3, dqv:=1*mp*shift(dcp, 4-deg) 
     +(shift(cv, 4-deg)*shift(dcp, 4-deg)+shift(dqv, 4-deg)*shift(ddqp, 
     4-deg))*fm] 
İlgili konular