仅循环第一个x列名称

时间:2016-07-20 15:34:02

标签: r loops

我正在使用以下代码

for(i in names(df)){
  df[[paste(i, 'length', sep="_")]] <- str_length(df[[i]])
}

但我只想改变第2,第3和第4列。这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用lapply()和矢量化列表分配来执行此操作:

df[paste0(names(df)[2:4],'_length')] <- lapply(df[2:4],str_length);
df;
##        V1      V2       V3       V4       V5 V2_length V3_length V4_length
## 1     jox      vr      qgm       dm ponznrpg         2         3         2
## 2      xy cskvquo  cwivjim pztjldas      sle         7         7         8
## 3  qbferj   uamts wkuylski        l   cwpoil         5         8         1
## 4 mszjuyf    wlgb  fsdgdgb   zmmetl    enbhf         4         7         6
## 5  dgkajw       i   wuulkv    ffpoc      xlu         1         6         5
## 6     mpm   rkxhl    rjhzq        q kbisiqvw         5         5         1

数据

set.seed(1L); NR <- 6L; NC <- 5L;
df <- as.data.frame(matrix(replicate(NR*NC,paste(collapse='',sample(letters,sample(1:8,1L),T)
)),NR));