R 将向量中的分类值替换为数字

R 将向量中的分类值替换为数字,r,R,我有一个数据框 t = data.frame(c(5,5,5), c('a','b','c', 'a', 'b', 'd'), c(1,2,3), c(1,2,3)) 和带有行名的向量 vector = table(t$V2) 如何用向量中的数字替换数据帧中的第二个分类列 我做了一些google foo,并尝试做以下工作: map = setNames(vector, rownames(vector)) to_replace = t$V2 to_replace[] = map[unlist(

我有一个数据框

t = data.frame(c(5,5,5), c('a','b','c', 'a', 'b', 'd'), c(1,2,3), c(1,2,3))
和带有行名的向量

vector = table(t$V2)
如何用向量中的数字替换数据帧中的第二个分类列

我做了一些google foo,并尝试做以下工作:

map = setNames(vector, rownames(vector))
to_replace = t$V2
to_replace[] = map[unlist(map)]
但我得到了一个错误:

Warning message:
In `[<-.factor`(`*tmp*`, , value = c(146L, 146L, 27L, 82L, 110L,  :
  invalid factor level, NA generated
警告消息:

在“[中,当我试图执行
rownames(vector)=c('a','b','c')
时,我遇到了一个错误。
rownames这就是你要做的吗

t = data.frame(v1 = c(5,5,5), v2 = c('a','b','c'), v3 = c(1,2,3), v4 = c(1,2,3))
vector = c(2,4,6)
row.names(t) <- vector

print(t)
# Output from print(t)
  v1 v2 v3 v4
2  5  a  1  1
4  5  b  2  2
6  5  c  3  3
t=data.frame(v1=c(5,5,5),v2=c('a','b','c'),v3=c(1,2,3),v4=c(1,2,3))
向量=c(2,4,6)

row.names(t)您的问题是数据帧中interstat的列是type
factor
。请检查以下代码,有无散列行

t <- data.frame(c(5,5,5), c('a','b','c'), c(1,2,3), c(1,2,3))
vector <- c(2,4,6,8)
names(vector) <- c('a', 'b', 'c', 'd')

# t[,2] <- as.character(t[,2])

for(i in 1:dim(t)[1]){
  t[i,2] <- vector[which(names(vector)==t[i,2])]
}

t你大概是说第3行的
names(vector)
(不是
rownames(vector)
)我不确定,但我已经编辑了我的帖子以使它更清楚。
rownames(vector)
对我和@42都产生了一个错误(见下文)。如果我使用表()从数据帧生成vector,rownames对我有效是的,因为
vector
不是作为向量存储的——因此与post的原始版本的行为不同:)
t$V2 <- vector
t = data.frame(v1 = c(5,5,5), v2 = c('a','b','c'), v3 = c(1,2,3), v4 = c(1,2,3))
vector = c(2,4,6)
row.names(t) <- vector

print(t)
# Output from print(t)
  v1 v2 v3 v4
2  5  a  1  1
4  5  b  2  2
6  5  c  3  3
t <- data.frame(c(5,5,5), c('a','b','c'), c(1,2,3), c(1,2,3))
vector <- c(2,4,6,8)
names(vector) <- c('a', 'b', 'c', 'd')

# t[,2] <- as.character(t[,2])

for(i in 1:dim(t)[1]){
  t[i,2] <- vector[which(names(vector)==t[i,2])]
}