2016-07-13 9 views
0

私は829要素のリスト(名前付き "データリスト")を持っています。各要素の数字は1から676までですが、要素が長さが1より大きいベクトルの場合、コードは676の先頭に戻ります。私は676より大きいリストの値だけから676を引く方法を探しています。Iveはlapplyを無駄に使ってみました。以下は私のコードとエラーメッセージが続くリストの小さなセクションです。ありがとうございました!リストの特定の要素だけを引く方法

[[825]] 
[1] 429 496 

[[826]] 
[1] 8 895 1181 

[[827]] 
[1] 6 

[[828]] 
[1] 901 916 1298 1299 1302 1307 

コード:

sub <- function(x){ 
for(i in datalist[x]){ 
    if(i > 676) 
    i = i-676 
} 
} 

lapply(1:829, sub) 

コードNULLとしてリスト要素の全てを返し、次のエラーメッセージを与えます。

エラーメッセージ:私が探して

1-50: In if (i > 676) i = i - 676 : 
the condition has length > 1 and only the first element will be used 

は、コード出力を持つことです。

[[825]] 
[1] 429 496 

[[826]] 
[1] 8 219 505 

[[827]] 
[1] 6 

[[828]] 
[1] 225 240 622 623 626 631 
+0

確かに私は信じていません。 –

+0

ええ、私はあなたがリストの各要素から減算している(つまり、リストから減算していない)わけではありません。 – SymbolixAU

+0

あなたはまだ他の質問の回答を利用できると思います。 – SymbolixAU

答えて

1

試してみてください。

また
sub <- function(x) {x[x > 676] <- x[x > 676] - 676} 
lapply(datalist, sub) 

、より大きい全ての値であれば676が2 * 676未満の場合、サブは:

sub <- function(x) {x %% 676} #returns modulo 
+0

残念ながら、いくつかの値は2 * 676以上です。このスクリプトを使用すると、676未満のすべての値が「整数(0)」として出力されます –

+0

2番目の「サブ」が機能しました! –

関連する問題