1

関数で、可変数の列を持つ data.frame を作成するループを作成したいと思います。

次のようなもので:

a = c("a","b")
b = c(list(1,2,3), list(4,5,6))
data.frame(a,b)

次のようなデータフレームを取得したいと思います:

a 1 2 3
b 4 5 6

私が取得する代わりに:

a  1  2  3  4  5  6
b  1  2  3  4  5  6

ありがとうございました!

PS:rbindも試しましたが、うまくいきません...

4

4 に答える 4

6

この種のことを行うには多くの方法があります。最初の問題は、「b」オブジェクトが行列ではないことです。行と列を持つものとして (または rbind を使用して) 定義する必要があります。

データ フレームを作成し、それらを結合することができます (これは、各オブジェクト タイプを数値や文字などとして維持するため、最初からマトリックスで作業するよりも優れていますが、マトリックスではそれが失われます)。

x1 <- data.frame(X=c("a","b"))
x2 <- data.frame(rbind(c(1,2,3), c(4,5,6)))
data.frame(x1, x2)
  X X1 X2 X3
1  a  1  2  3
2  b  4  5  6

x1 が行名の場合、James の例に従う必要があります。

x2 <- data.frame(rbind(c(1,2,3), c(4,5,6)))
rownames(x2) <- c("a","b")
于 2010-04-01T13:23:11.420 に答える
3

bの2つのリストを別々の変数として保持していますか?

もしそうなら、あなたは使うことができます:

x<-data.frame(rbind(b1,b2))
rownames(x)<-a
于 2010-04-01T13:05:40.303 に答える
2

別の方法

a = c("a","b")
b = list(c(1,2,3), c(4,5,6))

library(plyr)
df <- ldply(b)
rownames(df) <- a
于 2010-04-01T13:34:09.927 に答える
0

Thank you a lot ! Before reading your response, I tried another method using :

for (x in niveaux) {
    assign(x,pi)
    assign(paste(x,"moy"),"moy")
    }
# Que j'utilise ensuite avec qq chose du genre :
assign(x,append(get(x),1))

But it's more complicated!

Olivier

PS : 'a' can be a rowname or a column, the aim is to export data.frame as a CSV file.

于 2010-04-01T18:18:15.823 に答える