【发布时间】:2020-04-30 16:39:23
【问题描述】:
我有一个 csv 文件,其标题格式为:
a,b,c,d
1,6,5,6,8
df <- read_csv("test.csv")
由于某种原因,示例中的值 1 不正确,为了更正文件,我想将所有其他值向左移动,从而删除 1 但保留以 : 结尾的列
a,b,c,d
6,5,6,8
我怎样才能做到这一点?
【问题讨论】:
我有一个 csv 文件,其标题格式为:
a,b,c,d
1,6,5,6,8
df <- read_csv("test.csv")
由于某种原因,示例中的值 1 不正确,为了更正文件,我想将所有其他值向左移动,从而删除 1 但保留以 : 结尾的列
a,b,c,d
6,5,6,8
我怎样才能做到这一点?
【问题讨论】:
这个呢:
headers <- names(df)
new_df <- df[, 2:length(df)]
names(new_df) <- headers
【讨论】:
在一行代码中,structure 命令创建一个对象并分配属性:
structure(df[,2:length(df)], names = names(df)[1:(length(df)-1)])
认识到 data.frame 是等长向量的列表,其中每个向量代表一列,以下也将起作用:
structure(df[2:length(df)], names = names(df)[1:(length(df)-1)])
注意df[1:length(df)] 中没有逗号。
另外,我喜欢使用负索引从向量或列表中删除项目的技巧。所以我认为更简洁的代码是:
structure(df[-1], names = names(df)[-length(df)])
【讨论】: