这是我的情况:我有一个数据帧,我想将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
Run Code Online (Sandbox Code Playgroud)
现在我想要删除特定列中每个条目的最后3位数字.我只是尝试了substr,这不是我想要的东西:
df["Names"] = substr(df["Names"], 1,5)
df["Names"]
# Names
# 1 c("name1
# 2 c("name1
# 3 c("name1
Run Code Online (Sandbox Code Playgroud)
但是,如果我将substr应用于单个元素,我会得到正确的结果:
df[1,"Names"] = substr(df[1,"Names"], 1,5)
df[1,"Names"]
# Names
# [1,] "name1"
Run Code Online (Sandbox Code Playgroud)
我已经尝试过很多东西(我也尝试过为子目录而烦恼)但是我没有得到它.我对R很新,希望解决方案很明显......
谢谢你们所有人,克里斯!
使用mutate()来自dplyr:
library(dplyr)
df %>%
mutate(Names = substr(Names, 1, 5))
Run Code Online (Sandbox Code Playgroud)
尝试
substr(df[,'Names'], 1, nchar(df[,'Names'])-3)
Run Code Online (Sandbox Code Playgroud)
或者
sub('...$', '', df[,'Names'])
sub('...$', '', as.character(df$Names))
#[1] "name1" "name2" "name3"
Run Code Online (Sandbox Code Playgroud)