R 数据操纵使Lappy无法工作
编辑:好的,它与R 数据操纵使Lappy无法工作,r,lapply,rpart,R,Lapply,Rpart,编辑:好的,它与数据.all.filtered数据类型有关 过滤后的数据类型是从data.all.raw创建的,它可以与下面的lappy配合使用。奇怪的是我不知道这两者有什么不同 data.selectedFeatures <- sapply(data.train.raw, FUN = sf.getGoodFeaturesVector, treshold = 5) data.train.filtered <- lapply(seq(1, 8), FUN = function(i)
数据.all.filtered
数据类型有关
过滤后的数据类型是从data.all.raw
创建的,它可以与下面的lappy
配合使用。奇怪的是我不知道这两者有什么不同
data.selectedFeatures <- sapply(data.train.raw, FUN = sf.getGoodFeaturesVector, treshold = 5)
data.train.filtered <- lapply(seq(1, 8), FUN = function(i) sf.filterFeatures(data.train.raw[[i]], data.selectedFeatures[[i]]))
st.testFeature <- function(featureVector, treshold) {
if(!is.numeric(featureVector)) {return(T)}
numberOfNonZero <- sum(featureVector > 0)
numberOfZero <- length(featureVector) - numberOfNonZero
return(min(numberOfNonZero, numberOfZero) >= treshold)
}
sf.getGoodFeaturesVector <- function(data, treshold) {
selectedFeatures <- sapply(data, FUN = st.testFeature, treshold <- treshold)
whitelistedFeatures <- names(data) %in% c("id", "tp")
return(selectedFeatures | whitelistedFeatures)
}
sf.filterFeatures <- function(data, selectedFeatures) {
return(data[, selectedFeatures])
}
问题可能不在数据中,因为仅对一个(任何)数据集使用它就可以了:
rpart(tp ~ ., data = data.train.filtered[[1]])
即使通过索引只访问一个数据集工作正常(如上所示),使用lappy槽索引也会像第一个示例一样失败
lapply(1:8, function(i) rpart(tp ~ ., data = data.train.filtered[[i]]))
Error in terms.formula(formula, data = data) :
'.' in formula and no 'data' argument
索引版本的回溯如下所示:
10 terms.formula(formula, data = data)
9 terms(formula, data = data)
8 model.frame.default(formula = tp ~ ., data = data.train.filtered[[i]],
na.action = function (x)
{
Terms <- attr(x, "terms") ...
7 stats::model.frame(formula = tp ~ ., data = data.train.filtered[[i]],
na.action = function (x)
{
Terms <- attr(x, "terms") ...
6 eval(expr, envir, enclos)
5 eval(expr, p)
4 eval.parent(temp)
3 rpart(tp ~ ., data = data.train.filtered[[i]])
2 FUN(X[[i]], ...)
1 lapply(1:8, function(i) rpart(tp ~ ., data = data.train.filtered[[i]]))
10个术语。公式(公式,数据=数据)
9项(公式,数据=数据)
8 model.frame.default(公式=tp~,数据=data.train.filtered[[i]],
动作=功能(x)
{
术语使用数据(iris)
和purrr::map
:
datas <- split(iris, rep(sample(c(1,2,3)), length.out = nrow(iris))
models <- purrr::map(datas, ~ rpart(Species ~ ., data = .x)) # a better syntax
data使用data(虹膜)
和purrr::map
:
datas <- split(iris, rep(sample(c(1,2,3)), length.out = nrow(iris))
models <- purrr::map(datas, ~ rpart(Species ~ ., data = .x)) # a better syntax
datas诀窍是在原始列表上使用lappy()
,而不是在索引向量上。例如:
# toy data:
data.train.filtered <- list()
# create 10 different length data frames:
for(i in 1:10){
n <- rpois(1, 15)
x = rnorm(n)
data.train.filtered[[i]] <- data.frame(x =x,
tp = 3 + 2 * x + rnorm(n)
)
}
library(rpart)
lapply(data.train.filtered, function(dta){rpart(tp ~ ., data = dta)})
玩具数据:
data.train.filtered诀窍是在原始列表上使用lappy()
,而不是在索引向量上。例如:
# toy data:
data.train.filtered <- list()
# create 10 different length data frames:
for(i in 1:10){
n <- rpois(1, 15)
x = rnorm(n)
data.train.filtered[[i]] <- data.frame(x =x,
tp = 3 + 2 * x + rnorm(n)
)
}
library(rpart)
lapply(data.train.filtered, function(dta){rpart(tp ~ ., data = dta)})
玩具数据:
data.train.filtered好的,我终于找到了答案。问题是data.train.all
实际上并不是我想象的那样。我在过滤过程中出错,破坏了(默默地,谢谢)一切
修复方法是使用:
data.selectedFeatures <- lapply(data.train.raw, FUN = sf.getGoodFeaturesVector, treshold = 5)
data.selectedFeatures好的,我终于找到了答案。问题是data.train.all
实际上并不是我想象的那样。我在过滤过程中出错,破坏了(无声地,谢谢)一切
修复方法是使用:
data.selectedFeatures <- lapply(data.train.raw, FUN = sf.getGoodFeaturesVector, treshold = 5)
data.selectedFeatures 1.拥有一些玩具数据真的很有帮助。2.你有没有尝试过purr::map
而不是lappy
?我相信它正是为了这个目的。在RStudio博客上搜索“purrr”,找到两篇有示例的文章。尝试一个没有缩写的更长版本的公式。1.这真的有助于我有一些玩具数据。2.你试过purr::map
而不是lappy
吗?我相信它正是为了这个目的。在RStudio博客上搜索“purrr”,找到两篇有例子的帖子。尝试一个没有缩写的较长版本的公式。我想这就是我在评论中想要的。purr::map
是无效的事实上,map是“愚蠢”的,它甚至看不到公式中的点。我会留到以后,但我提出的方式应该是有效的,我想知道它为什么不起作用。我想这就是我希望在我的评论中看到的。purr::map
是无效的。实际上,map是“愚蠢的”足够了,它甚至看不到公式中的圆点。我会留到以后,但我提出的方式应该有效,我想知道为什么无效。这就是我在第一个例子中所展示的不起作用的东西。或者我遗漏了什么?我想这就是为什么你需要一个可复制的例子。这就是我所展示的不起作用的东西在第一个例子中不起作用。或者我遗漏了什么?我想这就是为什么你需要一个可复制的例子。