我想遍歷具有相同編號或 ID 的不同 data.frames 的元素:df1、df3、df4、df66、df76,此外我們還有 pp1、pp3、pp4、pp66、pp76 和 dd1、dd3、dd4、dd66, dd76。每個 data.frame 都有兩列頻率和能量:
df1 = as.data.frame(cbind("frequency"= runif(140) ,"energy"=runif(140)))
df3 = as.data.frame(cbind("frequency"= runif(140) ,"energy"=runif(140)))
df4 = as.data.frame(cbind("frequency"= runif(140) ,"energy"=runif(140)))
df66 = as.data.frame(cbind("frequency"= runif(140) ,"energy"=runif(140)))
df76 = as.data.frame(cbind("frequency"= runif(140) ,"energy"=runif(140)))
pp1 = as.data.frame(cbind("frequency"= runif(140) ,"energy"=runif(140)))
pp3 = as.data.frame(cbind("frequency"= runif(140) ,"energy"=runif(140)))
pp4 = as.data.frame(cbind("frequency"= runif(140) ,"energy"=runif(140)))
pp66 = as.data.frame(cbind("frequency"= runif(140) ,"energy"=runif(140)))
pp76 = as.data.frame(cbind("frequency"= runif(140) ,"energy"=runif(140)))
dd1 = as.data.frame(cbind("frequency"= runif(140) ,"energy"=runif(140)))
dd3 = as.data.frame(cbind("frequency"= runif(140) ,"energy"=runif(140)))
dd4 = as.data.frame(cbind("frequency"= runif(140) ,"energy"=runif(140)))
dd66 = as.data.frame(cbind("frequency"= runif(140) ,"energy"=runif(140)))
dd76 = as.data.frame(cbind("frequency"= runif(140) ,"energy"=runif(140)))
所以首先我們創建一個 ID 向量來回圈這些數字
ID = c(1, 3, 4, 66, 76)
我試過這個,很明顯是行不通的
for (i in ID){
dfmaster[i] <- df[i]$frequency pp[i]$frequency dd[i]$frequency
}
我還嘗試將 paste0 用作:
for (i in ID){
paste0("dfmaster",i) <- paste0("df",i) paste0("pp",i) paste0("dd",i)}
因為這將創建一個角色。但實際上我會如何處理例如 matlab。
uj5u.com熱心網友回復:
@Peter 關于制作可重現示例的評論非常相關,但您的問題足夠清楚,可以提供一些一般性建議,盡管在沒有測驗資料的情況下,這都是未經測驗的代碼。
回圈物件的“R 方式”是使用lists。您可以將獨立物件放入如下串列中:
dfList <- list(df1, df3, df4, df66, df76)
ppList <- list(pp1, pp3, pp4, pp66, pp76)
ddList <- list(dd1, dd3, dd4, dd66, dd76)
雖然同時創建它們和串列會更有效。
一旦物件在串列中,您就可以撰寫:
dfMaster <- lapply(
1:length(dfList),
function(i) {
dfList[[i]]$frequency ppList[[i]]$frequency ddList[[i]]$frequency
}
)
wherelapply 將第二個引數中的函式應用于其第一個引數的每個元素并回傳一個串列。
或者,如果您想使用for回圈,您可以撰寫:
dfMaster <- list()
for(i in 1:length(dfList)) {
dfMaster[[i]] <- dfList[[i]]$frequency
ppList[[i]]$frequency ddList[[i]]$frequency
}
[請注意,for在運行回圈之前,您需要在這里宣告一個空串列以包含回圈的結果。]
雖然我通常會避免for回圈,因為您很容易被 懶惰的評估發現。
如果 ID 相關,您可以命名串列中的元素;
ID <- c(1, 3, 4, 66, 76)
names(dfList) <- ID
names(ppList) <- ID
names(ddList) <- ID
dfMaster <- lapply(
ID,
function(i) {
dfList[[i]]$frequency ppList[[i]]$frequency ddList[[i]]$frequency
}
)
或者在創建串列時命名串列的元素:
dfList <- list("1"=df1, "3"=df3, "4"=df4, "66"=df66, "76"=df76)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/368656.html
