簡體   English   中英

R:在嵌套在sapply中的for循環中創建一個對象以計算個案

[英]R: Create an object in a for loop nested in sapply to count cases

我有一個數據框列表。 對於這些數據框中的每一個,我都希望進行僅涉及特定行和列的計算。 這些計算使用for循環,該循環對特定數字范圍內的案例數進行計數,並將此數字存儲在稱為counter的對象中。

如果將代碼僅應用於其中一個數據框,則該代碼有效。

counter=0
for (val in df[7,10:109]) {
  if (val <= 5000 & val !=-1) {counter=counter+1}
  else {break}
}

現在,我希望它為所有數據幀計算相同的值。 我嘗試使用sapply函數:

counter=0
sapply(filelist, function(x){
x<-get(x)
  for (val in x[7,10:109]) {
    if (val <= 5000 & val !=-1) {counter=counter+1}
    else {break}
    print(counter)
  }
})

但是,計算結果未保存在計數器中。 當我包含print(counter)命令時,我可以看到實際上為每個數據幀臨時保存了結果。
如何將它們添加到一個對象中,然后可以進一步操作?

您的代碼看起來不是最佳的,但是如果您在filelist上運行sapply ,則應該期望返回計數向量。 因此,您可以嘗試從sapply每個調用返回計數,然后將其分配給變量:

results <- sapply(filelist, function(x) {
    x <- get(x)
    counter <- 0
    for (val in x[7,10:109]) {
        if (val <= 5000 & val !=-1) {counter=counter+1}
        else {break}
        print(counter)
    }
    return(counter)
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM