1

私は「R」に関しては初心者ですが、かなりの量の情報を読みましたが、関数 fn で返すベクトルを出力できない理由をまだ理解していません。値「NULL」。この関数の目的は、2 つの配列から値を取得し、それらを加算して新しい配列に入れることです。print(test) コマンドを使用して、配列内の数値が正しく加算されていることを確認します。多分私は間違って追加していますか?今のところ問題はわかりません。

fn <- function(x,y) {
liste <- vector(mode = "numeric", length = 192)
k <- 0  
for (i in 1:(length(x))) {
    for (j in 1:(length(y))) {
        test<-x[i] + y[j]
        print(test)
        append(liste,test, after=k)
        k <- k +1
    }
}
return(liste)
}

event1 = c(0.0,5.0,10.0,12.0)
event2 = c(0.0,3.0,5.0,7.0)
event3 = c(6.0,8.0,10.0,10.0,12.0,13.0,13.0,14.0,16.0,17.0,17.0,20.0)

z <-fn(event2,event3)
names(z)
4

1 に答える 1

6

まず、zは (完全に0s の) ベクトルであり、名前のないベクトルです。そのため、names(z)が返されますNULL

第二に、あなたのアプローチでは、この行:

append(liste,test, after=k)

単に次のようにする必要があります。

liste[k] = test

これは、渡されたベクトルを変更appendせず、新しいものを返すだけだからです。

ただし、関数を使用して、やろうとしていることをより簡単に実行する方法がありますexpand.grid

fn <- function(x, y) {
    rowSums(expand.grid(x, y))
}
于 2013-03-01T20:36:14.910 に答える