r - 合并数据框和命名向量

标签 r vector merge

我有一个数据框和一个名称向量:

df=data.frame(col1=letters[1:3],col2=rnorm(3))
v=c(a=2,b=4,c=56,d=65)

我想合并它们,只保留数据框中的值
v=data.frame(v)
merge(df,v,by.x='col1',by.y=row.names,all.x=TRUE)
Error in as.vector(x, mode) : 
  cannot coerce type 'closure' to vector of type 'any'

我想要:
  col1   rnorm.3.  v
1    a  0.6182781  2
2    b  0.9559001  4
3    c -0.5459661 56

注意我的真实数据是 1M 行和 1.5M 命名向量

最佳答案

我们可以match col1namesv

df$v <- v[match(df$col1, names(v))]
df

#  col1       col2  v
#1    a  0.6658478  2
#2    b -1.6029447  4
#3    c  0.9019324 56

@Frank 在评论中提出了一种更简单的方法,
df$v <- v[df$col1]

关于r - 合并数据框和命名向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51896945/

相关文章:

R 滤波器未按预期工作

c++ - 在 C++ 中将对象转换为 vector

pandas - 如何从结果中删除左侧合并的右侧索引?

git - 为什么 merge 后的 git hook 没有运行?

version-control - 是否存在用于比较功能而不是行号的合并工具?

r - 在堆积条形图中添加组之间的间距

r - 矢量化 Rcpp 随机二项式绘制

R:如何为 `mean` 的 `rnorm` 参数提供向量?

c++ - vector<bool> 迭代器有任何保证吗?

C++ 遍历智能指针 vector