我让自己都束缚在试图理解下面的代码发生了什么事情。我试图为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'将是一个矩阵。 –