【发布时间】:2016-01-20 17:36:55
【问题描述】:
我让自己陷入了困境,试图理解下面的代码发生了什么。我正在尝试为 data.frame 中的每一行创建一个向量,然后附加到原始向量。我希望下面的代码返回一个数组列表。它似乎返回一个列表列表,内部列表包含数组?我怎样才能得到想要的东西 - 每个元素都附加一个新列作为数组?
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')])
-
如果您执行
str(df),您将看到df$x是一个向量列表,这就是您的示例中foreach 返回的内容。如果将 combine 函数更改为rbind,则df$x将是一个矩阵。