R 如何更改字符串行值?

R 如何更改字符串行值?,r,R,我想更改某些特定行的一些值。根据前面的问题,df[df$column==“value”,]字符串系数和分配 我几乎已经习惯了在任何时候使用read.csv或read.*和data.frame时使用stringsAsFactors=FALSE。它让我受了很多次的煎熬,有时它完全沉默,没有任何警告或错误 dates <- seq(as.Date("2015-02-13"), as.Date("2015-02-22"), by = "days") b <- c("one","one","t

我想更改某些特定行的一些值。根据前面的问题,
df[df$column==“value”,]<代码>字符串系数
和分配

我几乎已经习惯了在任何时候使用
read.csv
read.*
data.frame
时使用
stringsAsFactors=FALSE
。它让我受了很多次的煎熬,有时它完全沉默,没有任何警告或错误

dates <- seq(as.Date("2015-02-13"), as.Date("2015-02-22"), by = "days")
b <- c("one","one","two","two","four","four","one","one","five","five")
c <- c(20,30,26,20,30,40,5,10,4,0)
d <- c(11,2233,12,2,22,13,23,23,100,1)
df <- data.frame(dates,b,c,d, stringsAsFactors=FALSE)
df$b[df$b=="one"]<-"seven"

dates您可以使用
stringr

df$b <- str_replace_all(df$b, "one", "seven")
#        dates     b  c    d
#1  2015-02-13 seven 20   11
#2  2015-02-14 seven 30 2233
#3  2015-02-15   two 26   12
#4  2015-02-16   two 20    2
#5  2015-02-17  four 30   22
#6  2015-02-18  four 40   13
#7  2015-02-19 seven  5   23
#8  2015-02-20 seven 10   23
#9  2015-02-21  five  4  100
#10 2015-02-22  five  0   1

df$b可能
df$b[df$b==“one”]这比更传统的base R解决方案慢5到6倍。这样做是否有一些我看不到的好处?@cory它不仅适用于角色,也适用于因素。使用这种方法对我来说非常有效。在原始数据集上,使用R基会使矩阵上的下标数
不正确。我不知道为什么,也没有太多时间去弄清楚。所以,没有必要否决一个正确的答案。。。我没有投反对票。我只是觉得没有必要使用第三方库来做这样的事情,尤其是当它速度较慢时。事实上,它需要一个因素,并改变它的性格是没有好处的,我。如果你认为结果仍然是一个因素的话,那是非常危险的。然而,这是做OP想要做的事情的另一种方式。几乎所有关于
R
的问题都有使用不同软件包的不同解决方案
dates <- seq(as.Date("2015-02-13"), as.Date("2015-02-22"), by = "days")
b <- c("one","one","two","two","four","four","one","one","five","five")
c <- c(20,30,26,20,30,40,5,10,4,0)
d <- c(11,2233,12,2,22,13,23,23,100,1)
df <- data.frame(dates,b,c,d, stringsAsFactors=FALSE)
df$b[df$b=="one"]<-"seven"
df$b <- str_replace_all(df$b, "one", "seven")
#        dates     b  c    d
#1  2015-02-13 seven 20   11
#2  2015-02-14 seven 30 2233
#3  2015-02-15   two 26   12
#4  2015-02-16   two 20    2
#5  2015-02-17  four 30   22
#6  2015-02-18  four 40   13
#7  2015-02-19 seven  5   23
#8  2015-02-20 seven 10   23
#9  2015-02-21  five  4  100
#10 2015-02-22  five  0   1