for循环中的变量名

时间:2019-07-09 15:51:31

标签: r for-loop

x_names <-c("x1","x2","x3")
data <- c(1,2,3,4)
fake <- c(2,3,4,5)

for (i in x_names)
{
  x = fake
  data = as.data.frame(cbind(data,x))  
  #data <- data %>% rename(x_names = x) 
}

我举了一个玩具的例子。此代码将生成一个数据帧,其中有1列称为data,而3列称为x。我希望将它们命名为x1,x2,x3(存储在x_names中),而不是调用x列。我将x_name放入代码中(注释掉了),但是它不起作用。你能帮我吗?

4 个答案:

答案 0 :(得分:3)

我们还可以使用map_dfc中的tidyverse

library(tidyverse)

cbind(data, map_dfc(x_names, ~ tibble(!!.x := fake)))

输出:

  data x1 x2 x3
1    1  2  2  2
2    2  3  3  3
3    3  4  4  4
4    4  5  5  5

答案 1 :(得分:1)

我们可以避免a(b, c)循环,并使用WORKDIR使用RUN cd来重复for数据,并用replicate命名数据框。

fake

理想情况下,应避免在循环中增加对象,但是解决OP循环问题的一种方法是

setNames

答案 2 :(得分:1)

一个选项只是分配'fake'以在base R

中创建新列
data[x_names] <- fake
data
#  data x1 x2 x3
#1    1  2  2  2
#2    2  3  3  3
#3    3  4  4  4
#4    4  5  5  5

编辑:基于@avid_useR的评论

数据

data <- data.frame(data)

答案 3 :(得分:1)

当您交换注释掉的行时

#data <- data %>% rename(x_names = x)

使用

colnames(data)[ncol(data)]  <- i

它应该设置正确的名字。