2013-04-15 40 views
1

我想只顯示一個數組的一部分,它有一個很長的變量名。到目前爲止,我用:「自我」 - 變量易於在R中引用?

# Data 
k0100_m020_r05_h10000__aea000_aee0$cumsumData = c(-1:10) 

# show only parts 
k0100_m020_r05_h10000__aea000_aee0$cumsumData[k0100_m020_r05_h10000__aea000_aee0$cumsumData>0] 

我不知道是否有一個較短的形式,因爲我必須在方括號內重複變量名稱。 是否有對當前使用的變量的較短參考?如:

k0100_m020_r05_h10000__aea000_aee0$cumsumData[_self>0] 
+3

你爲什麼不叫陣列(是不是真的數組或你的意思是一個數據幀,因爲'$'運營商不與矩陣/陣列據我所知工作)別的東西用一個簡短的名字?例如'mydat < - k0100_m020_r05_h10000__aea000_aee0',然後'mydat [mydat $ cumsumData> 0,]' –

+0

相關/重複:http://stackoverflow.com/q/7768686/271616 –

+0

我想調用沒有輔助變量的數組。你擁有的變量越多,源代碼就越容易混淆。 –

回答

2

嘗試subset

subset(k0100_m020_r05_h10000__aea000_aee0, cumsumData > 0) 
0

我不知道這是否是你想要的,但也許with()可以幫助:

mask <- with(k0100_m020_r05_h10000__aea000_aee0, _self > 0) # gives you a boolean vector 
k0100_m020_r05_h10000__aea000_aee0[mask]     # gives you the result 
1

如果你會希望尋找到一個以上列的apply方法可能是有用的:

k0100_m020_r05_h10000__aea000_aee0 <- as.data.frame(matrix(rnorm(25),ncol=5)) 

apply(k0100_m020_r05_h10000__aea000_aee0 , 2 , function(x) x [ x>0 ]) 
#$V1 
#[1] 1.5840356 0.2497689 

#$V2 
#[1] 0.4179352 1.6187143 0.8245239 

#$V3 
#[1] 0.09328116 0.20761514 0.29894603 2.14484045 

#$V4 
#[1] 0.4882152 0.4643691 0.5591095 

#$V5 
#[1] 1.0749748 0.5405291 0.4899797 1.0828021