感謝您在這裏的時間。基於矢量值分配數據幀,其餘未觸動
我在FORTRAN中有這樣的舊代碼,我被要求轉換爲R.涉及一堆行,所有在一個while循環內,在那裏我有一些計算需要在基於條件的數據結構上執行向量,保持陣列的其餘部分不變。在這個例子中,數據並不重要,但是在下面的代碼中,我需要的是隻對與cond向量相對應的元素執行y和z賦值,如果它們爲TRUE,則該索引的值保持不變
s <- c("a","b","c","d","e","f","g")
v <- c(12965, 150086, 994637, 304718, 22960, 2524, 20608)
df1 <- data.frame(s=s, n=c(52, 158, 56, 19, 8, 7, 0))
df2 <- data.frame(s=s, n=c(23, 542, 433, 65, 5756, 12, 1))
cond <- c(TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE)
N <- 123
x <- N * df1$n
y <- rep(3, 37)
keep.going = TRUE
while (keep.going) {
y <- x * df1$n
...
z <- v * df1$n + df2$n
if (some condition)
keep.going <- FALSE
}
我加上y
的現有分配預期的結果是計算出的操作爲其中y但{3],Y [5],Z [3]和z [5] = 3不變。
ý將332592 3070572 3 44403 3 6027 0 和z將是674203 23714130 3 5789707 3 17680 1
在FORTRAN我有這樣的事情:
do i = 1, k1
if (cond(i)) then
y(i) = x(i) * df1n(i)
end if
end do
...
do i = 1, k1
if (cond(i)) then
z(i) = df1n(i) + df2n(i)
end if
end do
當然實現此作爲在FORTRAN中很容易,而不是R做事的方式。
任何人都可以指向我可以使用的任何文檔或結構嗎?
我有點失落。再次
感謝您的時間
'X < - N * df1'無效行。另外,你的期望輸出將如何? – 2015-03-02 15:13:04
更正了一些事情,增加了初始化和預期的結果。謝謝大衛 – notuo 2015-03-02 15:42:19