【发布时间】:2017-10-02 10:07:06
【问题描述】:
我想遍历我的所有行并重命名它们。基本上我只想在我的数据框中删除一些单词(每行名称中的相同模式)。
代码:
for (i in rownames(df)) {
row.names(df)[i] <- gsub("*The words I want to remove*", "", row.names(df)[i])
}
我收到以下错误:
row.names<-.data.frame(*tmp*, value = c("我要删除的字词", 中的错误: 'row.names' 长度无效
请注意,代码在循环之外可以正常工作。
【问题讨论】:
-
不需要循环。试试
gsub(paste(words_to_remove, collapse = '|'), '', rownames(df)) -
如果子字符串只需要删除一个由单词组成的字符,更安全的方法是使用
rownames(df) <- gsub(paste0("\\b(?:", paste(words_to_remove, collapse = '|'), ")\\b"), '', rownames(df))
标签: r for-loop dataframe gsub rowname