33

多数の列を持つデータ フレームがあり、各行の長さを含む個別の列を出力したいと考えています。

列名を繰り返し処理しようとしていますが、列ごとに、対応する列に「_length」が付加されて出力されます。

たとえば、col1 | col2 は col1 に移動します。col2 | col1_length | col2_length

私が使用しているコードは次のとおりです。

df <- data.frame(col1 = c("abc","abcd","a","abcdefg"),col2 = c("adf qqwe","d","e","f"))

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

ただし、これはスローしてエラーになります:

複雑な代入で無効な関数です。

R でこの方法でループを使用することはできますか?

4

4 に答える 4

10

を使用lapplyして各列をに渡しstr_length、次にcbind元の列に渡すことができますdata.frame...

library(stringr)

out <- lapply( df , str_length )    
df <- cbind( df , out )

#     col1     col2 col1 col2
#1     abc adf qqwe    3    8
#2    abcd        d    4    1
#3       a        e    1    1
#4 abcdefg        f    7    1
于 2013-08-27T10:23:56.757 に答える