2

如果某列具有特定内容(但是,不是确切的内容,而是我使用正则表达式找到的内容),我正在尝试更改 R 数据框中的一列。

例如:

 df:
 Name        City            Age
 Peter       Fort Wayne      15
 John        South Bend      20
 Christopher Boston          25
 Andy        Boston          30
 Johnathan   Los Angeles     35

现在,如果我想更改所有名字以 John 开头的人的年龄,我通常会这样选择他们:

 subset(df, grepl("^John", Name))

这会给我

 Name        City            Age
 John        South Bend      20
 Johnathan   Los Angeles     35

但是,显然我无法使用

 subset(df, grepl("^John", Name))$Age <- 20

是否有捷径可寻?我不想从数据框中删除行然后重新插入它们,这就是我迄今为止一直在做的事情。

谢谢你的帮助,奥利弗

4

1 回答 1

6

尝试:

 df$Age[grepl("^John", df$Name)] <- 20

subset返回 adata.frame并且您不能分配20给整个data.frame. 相反,按列索引,如上所示。

于 2013-02-21T15:21:19.523 回答