R函数 - 从多个值列表中访问单个返回值

时间:2017-06-27 23:49:33

标签: r function dataframe

我有一个R函数,它根据原始数据生成并返回(a)列表和(b)测试数据分区的列表。

我已将此功能应用于R iris数据集。然后我将列车数据分区提供给lda model。截断的输出和错误消息(来自lda部分)如下所示。

以下是代码段:

myfunc <- function(rawdata,) {
    ....
    return(list(train,test))}

dfs = create_data_partition(mydf)
dfs[1]
dfs[2]

control <- trainControl(method="cv", number=10)
metric <- "Accuracy"

set.seed(7)
fit_lda <- train(Species~., data=dfs[1], method="lda", metric=metric, trControl=control)

这是输出:

[[1]]
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            5.1         3.5          1.4         0.2     setosa
2            4.9         3.0          1.4         0.2     setosa
.
.
150          5.9         3.0          5.1         1.8  virginica

[[1]]
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
18           5.1         3.5          1.4         0.3     setosa
19           5.7         3.8          1.7         0.3     setosa
.
.
125          6.7         3.3          5.7         2.1  virginica
134          6.3         2.8          5.1         1.5  virginica
138          6.4         3.1          5.5         1.8  virginica

Error in eval(expr, envir, enclos) : object 'Species' not found
Calls: train ... eval -> <Anonymous> -> model.frame.default -> eval -> eval
Execution halted

我认为问题是dfs[1]不是dataframe - 而是在它前面有[[1]]。这是我在函数myfuncreturned multiple values的方式的工件 - 我认为return(list(train,test))格式不正确,但我不确定为什么会发生这种情况。

问题 在调用返回多个值的R函数(在列表中)之后,有没有办法分别访问返回的值?

1 个答案:

答案 0 :(得分:1)

使用双方括号表示法提取单个列表元素:[[。如果您希望提取第一个列表元素而不生成新列表,则需要

dfs[[1]]

Language Definition中更清楚地说明了这一点。