2013-06-25 35 views
-1

我試圖在R只是添加一個簡單的常數到表中的列與例如R列表/表操作替換「for」循環與sapply?

dim(exampletable) 
[1] 3900 2 

增加值在第二列中,我所做的事情和工作原理是:

newtable <- exampletable 
for (i in 1:nrow(newtable)){newtable[i,2] <- exampletable[i,2] + constant} 

但這似乎有點矯枉過正。有沒有更好的方法可以做到這一點,比如sapply?

謝謝,約翰內斯

+0

是的! 'newtable [,2] < - newtable [,2] +常量' –

回答

3

R的矢量化和具有該往往是在其他語言中更詳細的操作非常方便的語法。你所描述的可能是你想要做的最差的實施,幾乎與R的關係相反。相反,使用R的內置矢量化,過上快樂的長壽!

有很多方法可以做到這一點,但規範的方法(除了使用列索引整數而不是列名)是:

newtable[,2] <- newtable[,2] + constant 

例如

df <- data.frame(x = 1:3) 
df$y <- df$x + 1 
df 
# x y 
#1 1 2 
#2 2 3 
#3 3 4 

我建議在R上的基礎知識閱讀了上有r標籤的the info page幾個很好的教程。

+0

謝謝你的回答,儘管謝謝。這就是我認爲它應該更多樣子! – joanwa

0

試試這個:

#Dummy data 
exampletable <- data.frame(x=runif(3900), y=runif(3900)) 
#Define new constant 
MyConstant <- 10 
#Make newtable with MyConstant update 
newtable <- exampletable 
newtable$y <- newtable$y + MyConstant 

這爲R語言的基本知識,閱讀一些手冊。