我有一个很大的数据框,我想根据条件将字符追加到行名称中。我有以下示例:
trees <- data.frame(char = c('flower', 'cone', 'flower', 'cone'), number = c(3, 3, 5, 6))
rownames(trees) <- c('birch', 'pine', 'maple', 'redwood')
这就是我想要的,一个“c”旁边的松树和红木:
char number
birch flower 3
pine c cone 3
maple flower 5
redwood c cone 6
我知道我可以使用粘贴来追加字符:
# this gives the output I am looking for
paste(rownames(trees[trees$char == 'cone',]), 'c')
[1] "pine c" "redwood c"
但是,当我尝试执行下面这行代码时,更改没有显示在数据框中:
rownames(trees[trees$char == 'cone',]) <- paste(rownames(trees[trees$char == 'cone',]), 'c')
3条答案
按热度按时间mzillmmw1#
trees$char
是一个向量(1维)。所以不需要一个[,]
。这是不值得一个答案,但很难在评论中提到,所以刚刚发布。嘿!bdw我现在意识到,另一点要提到的是,在您的代码中,您没有将其分配回原始的
data.frame
树,而是将其分配给子集data.frame
,这样就不会反映出来。hl0ma9xz2#
一个选择是
另一个选择是
qltillow3#
可以使用ifelse函数定义行名:如果char值为“cone”,则将“c”粘贴到当前行名的末尾,否则使用现有行名。