我有一个R
函数,它可以根据原始数据生成并返回列表(a)列表和(b)测试数据分区。R功能 - 从多个值列表中访问单个返回值
我已将此功能应用于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]]
在它的前面。这是如何在功能myfunc
returned multiple values - 我认为这return(list(train,test))
格式不正确,但我不知道这是为什么发生的原因。
问题 调用一个函数R
返回多个值(列表),是否有单独访问返回值的方法后?
请参阅:https://stackoverflow.com/questions/1169456/the-difference-between-and-notations-for-accessing-the-elements-of-a-lis –
谢谢。很简单。答:我需要使用'data = dfs [[1]]'而不是'data = dfs [1]'。再次感谢! –
正确,但了解差异可能非常重要,所以请花时间在头脑中清楚说明。 –