sapply 函数从命名向量中的值填充数据帧的列,需要很长时间。有更快的方法吗?

2024-05-27

这是我正在做的一个例子。

x <- c(a="2",b="4",c="2",d="9")
df <- data.frame(names = c("d","c","a","b"))

x是一个命名向量,其值的顺序与它们在中出现的顺序不同df$names。我需要在数据框中形成一个新列,该列的值来自x。这是我写的。

df$vals <- sapply(df$names,function(t) x[t])

这段代码在这个玩具示例中工作得很好,但我正在处理一个超过 150,000 行的数据框,而这只是花费了相当长的时间。是sapply一个缓慢的方法来做到这一点?


df$vals <- x[match(df$names, names(x))]

match非常快(在本例中为 20 倍以上)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sapply 函数从命名向量中的值填充数据帧的列,需要很长时间。有更快的方法吗? 的相关文章

随机推荐