我讓自己都束縛在試圖理解下面的代碼發生了什麼事情。我試圖爲data.frame中的每一行創建一個向量,然後附加到原始的。我期望下面的代碼返回一個數組列表。它似乎返回列表的列表,內部列表包含數組?我怎麼能得到我想要的 - 一個新的列附加每個元素是一個數組?爲什麼foreach返回一個列表
df <- mtcars
library(foreach)
library(iterators)
df$x = foreach (row = iter(df, by='row')) %do% {
profile <- as.numeric(row[,c('mpg', 'cyl', 'disp')])
return(profile)
}
我期待的結果:
df[1,]$x == as.numeric(df[1,c('mpg', 'cyl', 'disp')])
,而不是我得到
df[1,]$x[1] == as.numeric(df[1,c('mpg', 'cyl', 'disp')])
(這裏我用==來表示兩個集合都是一樣的,我意識到[R大概不會以這種方式實現列表相等運算符)
我不確定你想要得到的輸出。你期望從'df [1,] $ x [1]'得到什麼? –
我試圖讓df [1,] $ x返回df [1,] $ x [1]所做的 - 即as.numeric(row [1,c('mpg','cyl','disp ')]) – user2981639
如果你執行'str(df)',你會看到'df $ x'是一個向量列表,這是你的例子中foreach的返回值。如果您將組合函數更改爲'rbind',那麼'df $ x'將是一個矩陣。 –