我正在使用以下代码
for(i in names(df)){
df[[paste(i, 'length', sep="_")]] <- str_length(df[[i]])
}
但我只想改变第2,第3和第4列。这样做的最佳方式是什么?
答案 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));