gpt4 book ai didi

r - 为什么 mapply 不能按预期使用转换?

转载 作者:行者123 更新时间:2023-12-04 11:20:37 26 4
gpt4 key购买 nike

我发了一个 answer使用 dplyr 回答问题和 tidyr .基于 this comment我用过 Map建立答案。
接下来我尝试使用 base R工具仅用于回答相同的问题,但这并没有按预期工作:

transform(
df,
Begin_New = Map(seq, Begin, End - 6000, list(by = 1000)) # or mapply(...)
)
导致错误:

Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, : Arguments imply different number of rows: 25, 33, 84, 36, 85, 165


哦,那好吧。这似乎不起作用, 但是 为什么这个有效?
df2 <- data.frame(id = 1:4, nested = c("a, b, f", "c, d", "e", "e, f"))
transform(df2, nested = strsplit(nested, ", "))
据我了解 Map(seq, Begin, End - 6000, list(by = 1000))strsplit(nested, ", ")两者都返回 list()包含向量。我错过了什么?
我读了这个问题 Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, : Arguments imply different number of rows: 1, 4, 5, 2但我仍然不知道,为什么这两个例子表现不同。
数据
df <- structure(list(ID = c("A01", "A01", "A01", "A01", "A01", "A01"
), Period = c("Baseline", "Run", "Recovery", "Baseline", "Run",
"Recovery"), Begin = c(0, 30500, 68500, 2000, 45000, 135000),
End = c(30500, 68500, 158000, 43000, 135000, 305000)), row.names = c(NA,
-6L), class = "data.frame")

最佳答案

我认为它与Create a data.frame where a column is a list有关.所以使用 I禁止解释/转换对象。

transform(
df,
Begin_New = I(Map(seq, Begin, End - 6000, list(by = 1000)))
)
另一种方法是使用 list2DF喜欢。
transform(
df,
unusedName = list2DF(list(Begin_New = Map(seq, Begin, End - 6000,
list(by = 1000))))
)
正如@r2evans 已经指出的那样。在第一种情况下,您创建一个新列,在第二种情况下,您覆盖现有的列。

关于r - 为什么 mapply 不能按预期使用转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69013559/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com