R:将substr应用于dataframe列的每个元素

R:将substr应用于dataframe列的每个元素,r,R,这就是我的情况: 我有一个dataframe,我想将substr函数应用于特定列的每个元素。我要操作的列包含以下表达式: x = c("name1_01", "name2_02", "name3_01") df = data.frame(x) colnames(df) = ("Names") df["Names"] = sapply(df["Names"], as.character) df # Names # 1 name1_01 # 2 name2_01 # 3 name3_01 现在我想

这就是我的情况: 我有一个dataframe,我想将substr函数应用于特定列的每个元素。我要操作的列包含以下表达式:

x = c("name1_01", "name2_02", "name3_01")
df = data.frame(x)
colnames(df) = ("Names")
df["Names"] = sapply(df["Names"], as.character)
df
# Names
# 1 name1_01
# 2 name2_01
# 3 name3_01
现在我想切掉特定列中每个条目的最后3位数字。 我只是尝试了substr,但它并没有告诉我我想要什么:

df["Names"] = substr(df["Names"], 1,5)
df["Names"]
# Names
# 1 c("name1
# 2 c("name1
# 3 c("name1
但是,如果我将substr应用于单个元素,我会得到正确的结果:

df[1,"Names"] = substr(df[1,"Names"], 1,5)
df[1,"Names"]
# Names
# [1,] "name1"
我已经试过很多次了(我也试过sapply的substr),但我不明白。我对R很陌生,希望解决办法很明显

先谢谢大家,, 克里斯

试试看

substr(df[,'Names'], 1, nchar(df[,'Names'])-3)

使用
dplyr
中的
mutate()

library(dplyr)
df %>%
  mutate(Names = substr(Names, 1, 5))

df[[“Names”]]提示:
df
使用
data.frame(name=x,stringsAsFactors=FALSE)更容易创建
?它不应该替换第一个
name1\u 01
而不去管其他的吗?@rawr它应该可以工作,因为我们专门为每个字符串元素替换最后三个元素。假设模式不同,例如,将字符串中的
替换为多个
。然后
gsub
是替换所有的方法<代码>子(“名称1\u 01\u 01”)[1]“名称101\u 01”
library(dplyr)
df %>%
  mutate(Names = substr(Names, 1, 5))