R 使用粘贴功能从现有列名创建新列名

R 使用粘贴功能从现有列名创建新列名,r,R,假设我有一个数据帧df,其中包含变量a、B和C。我想再创建3个相应的列,分别命名为A_排名、B_排名和C_排名。为了这个问题,我将如何填充它们并不重要,所以让我们假设我将它们全部设置为5。我尝试了以下代码: for (i in 1:length(df)){ df%>%mutate( paste(colnames(df)[i],"ranked", sep="_")) = 5 } 我还尝试: for (i in 1:length(df)){ df%>%mutate(

假设我有一个数据帧
df
,其中包含变量
a
B
C
。我想再创建3个相应的列,分别命名为
A_排名
B_排名
C_排名
。为了这个问题,我将如何填充它们并不重要,所以让我们假设我将它们全部设置为5。我尝试了以下代码:

for (i in 1:length(df)){
  df%>%mutate(
    paste(colnames(df)[i],"ranked", sep="_")) = 5
}
我还尝试:

for (i in 1:length(df)){
  df%>%mutate(
    as.vector(paste(colnames(df)[i],"ranked", sep="_")) = 5
}
以及:


似乎没有人认为它们有效。有人能告诉我做这件事的正确方法吗?

这里有一个使用iris数据集的data.table选项(这里我们根据现有列的
colnames
再创建4列)

#数据

df这里是一个使用iris数据集的data.table选项(这里我们根据现有列的
colnames
再创建4列)

#数据
这有帮助吗

dat <- data.frame(A=5,B=5,C=5)

dat %>%
  mutate_each(funs(ranked=sum)) %>% 
  head()
dat%
变异_each(funs(排名=总和))%>%
总目()
这有帮助吗

dat <- data.frame(A=5,B=5,C=5)

dat %>%
  mutate_each(funs(ranked=sum)) %>% 
  head()
dat%
变异_each(funs(排名=总和))%>%
总目()
这应该可以:

df[paste(names(df), "ranked", sep = "_")] <- 5

df

#   A B C A_ranked B_ranked C_ranked
# 1 1 2 3        5        5        5
df[粘贴(名称(df),“排名”,sep=“”)]这应该可以:

df[paste(names(df), "ranked", sep = "_")] <- 5

df

#   A B C A_ranked B_ranked C_ranked
# 1 1 2 3        5        5        5
df[粘贴(名称(df),“排名”,sep=“”)]
df <- data.frame(A = 1, B = 2, C = 3)