2013-06-24 26 views
0

這是一個基本問題;我爲此道歉。 讓x <- c(1,2,3,4,5)。我想製作長度爲5s.t.的矢量z。其組件均爲x滿足條件R如何通過選擇其組件的固定值來產生矢量修剪另一個矢量

if if x[i]>2 then then 2

的結果應該

z <- c(1,2,2,2,2) 

我知道

z <- which(x>2) 

給我

3 4 5 

,但我無法找到實現它在結果得出的好方法。 謝謝大家的支持。

編輯。如果不是考慮一個向量x我有一個矩陣M與列xy,我想應用上述修剪到列x離開y保持不變,我應該如何繼續?

回答

1

例如:

y <- x 
y[x>2] <- 2 
1 2 2 2 2 

如果您在一個matrix M有兩列,並要與值> 2〜2只更換第一列,然後執行:

M[,1][M[,1]>2] <- 2 
+0

非常感謝,它的工作原理。我很感興趣('我不是profi')需要將'y'引入'x',然後再使用'x'。 – Avitus

+0

@agstudy,我正在考慮被替換的值不是2的情況(例如:3,會導致'(1,2,3,3,3)')。但我認爲你的解決方案專門爲此而設。因此刪除了評論。 – Arun

+0

@agstudy如果不是考慮一個向量'x',我有一個矩陣'M',列'x'和'y',並且我想將上述修剪應用到列'x'而不改變'y',應該如何我繼續? 'M [M $ x> 2,] < - 2'沒有意義... – Avitus

3

您可以使用pmin

pmin(x, 2) 
# [1] 1 2 2 2 2