【发布时间】:2017-04-22 07:45:15
【问题描述】:
我有一个包含 2 列的数据框,第一列是 ID 号,第二列是数字列表。我已经定义了一个对列表求和并添加 2 的函数。我想做的是在不使用 for 循环的情况下对所有行进行计算。我尝试使用 apply 但我无法使其工作...
代码如下:
测试数据框:
d1 <- c(1,2,3,4,5)
d2 <- c(4,6,8)
d3 <- c(5,10)
df1 <- data.frame(cbind(1, I(list(d1))))
df2 <- data.frame(cbind(2, I(list(d2))))
df3 <- data.frame(cbind(3, I(list(d3))))
df <- rbind(df1, df2, df3)
定义的函数sum2:
sum2 <- function(a)
{
sum(unlist(a)) + 2
}
如何使用 apply 并将第三列添加到包含计算值的 df?
谢谢!
【问题讨论】:
-
为什么你更喜欢
sapply而不是循环?它们都是一个循环。除非你想要更简洁的语法? -
我认为我可以更有效地做到这一点......有没有更好的方法来做到这一点?
-
目前想不出一个,抱歉。如果
X2包含诸如"4, 6, 8"之类的字符串而不是列表,您可以轻松地对其进行矢量化,但我不确定如何对您的特定格式进行矢量化。