我正在R的for循環工作,我不得不將結果存儲在一個向量中。我知道這是一個相當普遍的答案,我的問題不在那裏,但讓我們繼續進行訂單。for循環與小數和存儲結果在一個向量
我得到了這樣的數據:
# here the data
alpha <- c(1,2,3,4,5,6)
beta <- c(0.1,0.5,0.3,0.4,0.5,0.6)
data <- data.frame(alpha, beta)
我做一個簡單的函數,選擇超過某一閾值的數據:
# here the function
funny <- function(x,k)
{x[x[,2]>=k,]}
# here an example of the function
funny(data,0.5)
alpha beta
2 2 0.5
5 5 0.5
6 6 0.6
但我想要的是走行數超過門檻,所以:
# here the result wanted
nrow(funny(data,0.5))
[1] 3
所以我有一個問題:有多少行超過閾值在t他的變化k,函數的參數?我想在矢量中得到結果。我創建了一個for循環,看着
Saving results from for loop as a vector in r
我開了這一點:首先,讓我們來看看是否一切正常:
# here the sequence
s <-seq(0.1,0.6, by = 0.1)
# here the I loop
for(i in s) {print(nrow(funny(data,i)))}
[1] 6
[1] 5
[1] 4
[1] 4
[1] 3
[1] 1
但顯然這是不存儲在一個向量中。問題在這裏。我想:
# already written sequence
s <-seq(0.1,0.6, by = 0.1)
# here the empty vector
vec <- vector("numeric")
# here the II problematic loop
for(i in s) {vec[i]<-(nrow(funny(data,i)))}
vec
在這裏,結果我不想,我希望像[1] 6 5 4 4 3 1
[1] 0 0 0 0 0 0
而且相關信息: 我想是這樣的:
# sequence * 10
s <-seq(1,6, by = 1)
# here the vector
vec <- vector("numeric")
# and the III loop, that it works now.
for(i in s) {vec[i]<-(nrow(funny(data,i/10)))}
vec
[1] 6 5 5 4 3 1
但我不喜歡這個,因爲我不明白爲什麼III能夠工作,爲什麼II環沒有。
我缺少什麼?