- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个 data.frames 列表
dflist <- list(data.frame(a=1:3), data.frame(b=10:12, a=4:6))
如果我想从列表中的每个项目中提取第一列,我可以这样做
lapply(dflist, `[[`, 1)
# [[1]]
# [1] 1 2 3
#
# [[2]]
# [1] 10 11 12
为什么我不能以同样的方式使用“$”函数
lapply(dflist, `$`, "a")
# [[1]]
# NULL
#
# [[2]]
# NULL
但这两个都有效:
lapply(dflist, function(x) x$a)
`$`(dflist[[1]], "a")
我意识到在这种情况下可以使用
lapply(dflist, `[[`, "a")
但我正在使用一个 S4 对象,该对象似乎不允许通过 [[
进行索引。例如
library(adegenet)
data(nancycats)
catpop <- genind2genpop(nancycats)
mylist <- list(catpop, catpop)
#works
catpop[[1]]$tab
#doesn't work
lapply(mylist, "$", "tab")
# Error in slot(x, name) :
# no slot of name "..." for this object of class "genpop"
#doesn't work
lapply(mylist, "[[", "tab")
# Error in FUN(X[[1L]], ...) : this S4 class is not subsettable
最佳答案
对于第一个示例,您可以这样做:
lapply(dflist, `$.data.frame`, "a")
对于第二个,使用 slot()
访问器函数
lapply(mylist, "slot", "tab")
<小时/>
我不确定为什么方法分派(dispatch)在第一种情况下不起作用,但 ?lapply
的 Note
部分确实解决了对于像 $
这样的原始函数来说,它的 borked 方法调度就是这个问题:
Note:
[...]
For historical reasons, the calls created by ‘lapply’ are
unevaluated, and code has been written (e.g., ‘bquote’) that
relies on this. This means that the recorded call is always of
the form ‘FUN(X[[i]], ...)’, with ‘i’ replaced by the current
(integer or double) index. This is not normally a problem, but it
can be if ‘FUN’ uses ‘sys.call’ or ‘match.call’ or if it is a
primitive function that makes use of the call. This means that it
is often safer to call primitive functions with a wrapper, so that
e.g. ‘lapply(ll, function(x) is.numeric(x))’ is required to ensure
that method dispatch for ‘is.numeric’ occurs correctly.
关于r - lapply 与 "$"函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30131542/
我正在尝试从许多格式不整洁的 excel 电子表格中提取一些数据。我想我需要在 lapply 内运行 lapply,但似乎无法使其工作。这是一个例子: 这是两个数据框,其格式与我在 excel 表中找
显然,我仍然不完全理解 lapply 到底是如何工作的。当然,它对列表元素应用一个函数并返回一个列表。然而,当将它与自定义函数一起使用时,我不太确定如何有效地使用它。例如,我想在使用 dcast 的自
我创建了一个名为“列表”的数据框列表,并且只想选择列表中每个数据集的某些列。 library(dplyr) new_list <- lapply(list, select(list, Date)) 它
我想使用 lapply 同时运行四个多级模型(使用 lmer)。 将 lm() 与一个因变量和一组自变量一起使用的简单示例是: data(mtcars) varlist <- names(mtcars
我编写了一个函数,可以将字符输入转换为数字输出。 votedIndicated votedIndicated("V") [1] 1 > votedIndicated("D") [1] 0 但是,当我
简介 我一直在编写一个程序来处理一些原始数据,然后通过几个统计过程来传递它。总而言之,它使用了多个“lapply”实例。 例如 :在脚本的一部分中,我使用了一个称为 Maxstat 的函数(请注意,该
我有一个 list l ,具有以下特点: 它有 3 个元素 每个元素都是一个长度为 5 的数值向量 每个向量包含从 1 到 5 的数字 l = list(a = c(2, 3, 1, 5, 1), b
我有一个功能列表 functions flist arg arg [1] 6.123234e-17 > Funcall ## Compute log(exp(acos(cos(0)) > Re
我有一个字符向量中的 url 列表,我想暂停之间的过程 查询,因为如果不是 x 查询被拒绝。 urls=c('url1','url2','url3') 这是我想做的事 htmlpages=lapply
我有一个具有以下结构的 6 个列表,我正在尝试提取特定元素并将它们存储在数据 data.frame 中。 我已经应用了这个, lapply(rmseErrorsHyperparameters, '[[
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在阅读 Wickham 的 Advanced R 书。此问题与解决第 12 章 - 泛函中的问题 5 有关。该练习要求我们: Implement a version of lapply() tha
有没有办法使用lapply()以某种方式强制它在单步执行列表的下一个元素之前等待用户的“输入”?如果是这样,你能提供一个简单的例子吗? 最佳答案 这是示例: es <- list(1, 2, 3) l
我有一个我想摆脱的循环,但我也不太明白怎么做。假设我有一个数据框: tmp = data.frame(Gender = rep(c("Male", "Female"), each = 6),
我已经生成了一个模型列表,并想创建一个汇总表。 例如,这里有两个模型: x <- seq(1:10) y <- sin(x)^2 model1 <- lm(y ~ x) model2 <- lm(y
我在对数据帧列表运行稳健的线性回归模型(使用 MASS 库中的 rlm)时遇到问题。 可重现的示例: var1 <- c(1:100) var2 <- var1*var1 df1 <- data.f
我正在清理一组文本文件,目前将它们作为具有相同结构的数据框列表进行操作。 鉴于文本文件的结构,每个 df 中最终都会有一个不规则的单元格。该单元格包含一个包含列名和值的字符串。我需要提取该值并将其分配
我有一个包含字符数据的 data.frame,我希望最终得到一个具有相同列标题但每个值都有计数的矩阵。到目前为止,我可以获得一个我想要的维度的空矩阵,但是当我尝试用计数填充 myMatrix 时,它不
如何在 lapply 中指定多行语法。我的语法也没有替换第一行中的 text_query。提前谢谢你。 text_query<-lapply(text_query, function(x) { g
您可以通过运行重置数据框中的行名 >rownames(df) newlist <- llply(mylist, function(df) { rownames(df) <- NULL }) 但 tit
我是一名优秀的程序员,十分优秀!