x
8 つの整数列 (および約 1000 行のデータ)を持つデータ フレームがあります。8 つの整数パラメーターを取り、単一の値を返す UDF 'テスト' を作成しました。任意の整数値を渡して UDF をテストしたところ、単一の値が返されるので、動作することがわかりました。8 つの整数列を行ごとに渡し、データ フレームの各行の新しい列として値を返すようにしたいと思います。試してみx$NewColumn = test(x$Col1, x$Col2 .... x$Col8)
ましたが、データが正しく渡されていないことを示すエラーが関数から返されます。誰かが私が間違っていることを教えてもらえますか?
質問する
524 次
3 に答える
1
あなたが使用することができますmapply
mapply(test, x$Col1, x$Col2 .... x$Col8)
于 2013-04-30T16:18:34.957 に答える
1
df = data.frame(matrix(runif(80),ncol=8))
# creation of a matrix for the example
my.function = function (x) { return (mean(x)) } # write your function
# and then use the apply function
new.column = apply(df,1, my.function)
df$new.column = new.column
于 2013-04-30T16:22:40.463 に答える
0
関数を使用してapply
、data.frame の行全体を実行してみてください。
## Create some data
df <- as.data.frame( matrix(runif(40),10) )
## Now we can use 'apply'. The '1' in the second argument means we apply across rows, if it were two we would apply across columns.
## The function we are applying to each row is to sum all the values in that row
df$Total <- apply( df , 1 , sum )
## We can also pass 'anonymous' functions. In this instance our function takes a single vector, 'x'
## 'x' is all the values of that row, and we can use them like so to do the same thing as 'sum' in the previous example
df$Function <- apply( df , 1 , function(x) x[1] + x[2] + x[3] + x[4] )
## And if we see what is in df, 'df$Total' and 'df$Function' should have the same values
df
# V1 V2 V3 V4 Total Function
#1 0.6615353 0.5900620 0.02655674 0.1036002 1.381754 1.381754
#2 0.8471900 0.8927228 0.77014101 0.6379024 3.147956 3.147956
#3 0.8783624 0.6769206 0.09598907 0.6681616 2.319434 2.319434
#4 0.7845933 0.8992605 0.13271067 0.3691835 2.185748 2.185748
#5 0.9753706 0.1374564 0.12631014 0.3693808 1.608518 1.608518
#6 0.4229039 0.7590963 0.79936058 0.2674258 2.248787 2.248787
#7 0.2635403 0.6454591 0.98748926 0.5888263 2.485315 2.485315
#8 0.7008617 0.7505975 0.39355439 0.5943362 2.439350 2.439350
#9 0.1169755 0.1961099 0.88216054 0.3383819 1.533628 1.533628
#10 0.3298974 0.0110522 0.88460835 0.3700531 1.595611 1.595611
于 2013-04-30T16:08:16.143 に答える