如何使用循环创建多个列

时间:2017-07-06 14:20:02

标签: r

我正在努力以干燥的方式创建多个列 我搜索了谷歌和堆栈交换,我仍在努力与下面。

df <- data.frame(red = 1:10, blue=seq(1,30,3))

myfunction <- function(x){
  log(x) + 10
}

df$green <- myfunction(df$red)
df$yellow <- myfunction(df$blue)

我的问题是:
如何使用for循环创建绿色和黄色列? 如何使用apply函数创建绿色和黄色?

2 个答案:

答案 0 :(得分:1)

我花了一些时间研究这些事情。大多数情况下,您要么知道新变量的所有名称,要么让它们以有序模式工作,这样您就可以将名称与索引变量粘贴在一起。

df <- data.frame(red = 1:10, blue=seq(1,30,3))

myfunction <- function(x){
  log(x) + 10
}

newcols = apply(X = df, MARGIN = 2, FUN = myfunction)
colnames(newcols) = c("greeen","yellow")
df = cbind(df,newcols)

# Alternative
df <- data.frame(red = 1:10, blue=seq(1,30,3))
colors = c("green", "yellow")
for(i in 1:length(colors)){
  df[,colors[i]] = myfunction(df[,i])
}

答案 1 :(得分:0)

正如Sotos所指出的那样,申请要比lapply慢。所以我认为最佳解决方案是:

sudo pkill -9 python