我有一个数据框和一个名称向量:
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
col1
与 names
的 v
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/