[英]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.