将函数应用于数据框的列(列是列表)
Apply function to column of data frame (column is a list)
我有一个包含两列的数据框,第一列是身份证号,第二列是数字列表。我定义了一个对列表求和并加 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
df$NewCol <- sapply(df$X2, function(x) sum(x) + 2)
或使用OP的功能,但unlist
不需要
sapply(df$X2, sum2)
以下适用于您的示例
sapply(df[,2], function(x) sum(x)+2)
我有一个包含两列的数据框,第一列是身份证号,第二列是数字列表。我定义了一个对列表求和并加 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
df$NewCol <- sapply(df$X2, function(x) sum(x) + 2)
或使用OP的功能,但unlist
不需要
sapply(df$X2, sum2)
以下适用于您的示例
sapply(df[,2], function(x) sum(x)+2)