在R中的数据框中从具有向量中名称的现有列创建新的列集

时间:2015-03-17 14:47:07

标签: r

我在R中有一个数据框,字段为x,y,A,B,如下所示:

d <- data.frame(x=seq(1,26),y=seq(1,26,by=2),A=LETTERS[seq(1,26)],
                          B=letters[seq(1,26)])

和列名矢量:

colnames <- c('A','B')

我想在数据框A_mod和B_mod中添加额外的字段,其值基于处理同一行的resp A和B的值的函数。

所以我想得到一个带有字段x,y,A,B和A_mod以及B_mod的数据帧。 A_mod和B_mod的值由resp

计算
   A_mod = tolower(A)

   B_mod = toupper(B) for instance (just a mock example).

如何在不明确命名列ABA_mod以及B_mod的情况下执行此操作,而是使用向量字符串。实际上我的数据帧有30列,所以手动编写都很繁琐(并且列数会增加)。

1 个答案:

答案 0 :(得分:2)

尝试

d[paste0(colnames,'_mod')] <- lapply(d[colnames], tolower)
head(d,3)
#   x y A B A_mod B_mod
#1 1 1 A a     a     a
#2 2 3 B b     b     b
#3 3 5 C c     c     c