2017-11-17 158 views
0

我有R中的數據集組織像這樣:粘貼字符串值到一個函數

   x freq 
1 PRODUCT10000 6 
2 PRODUCT10001 20 
3 PRODUCT10002 11 
4 PRODUCT10003 4 
5 PRODUCT10004 1 
6 PRODUCT10005 2 

然後,我有一個像

fun <- function(number, df1, string, df2){NormC <- as.numeric(df1[string, "normc"]) 
    df2$NormC <- rep(NormC)} 

功能如何能夠通過我的DF迭代並將每個值"x"插入函數中?

我認爲這個問題是該函數(其中有4個輸入變量),這部分的結構類似於所謂NormC <- as.numeric(df[string, "normc"])

+1

有趣的是什麼?取決於'fun'的工作方式,你可能不需要迭代。 R中的許多操作都是矢量化的,如果你的函數是以某種方式編寫的話,你可以調用'fun(df $ x)'。 – duckmayr

+0

事情是,該函數有4個輸入變量...對於其中一個變量,我想遍歷一個df-Im的行,並且使用這些行作爲字符串值時也有問題... – zsad512

+0

在那種情況下,那麼你可能會得到更高質量的幫助,編輯你的問題給一個[最小可重現的例子](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。在你的情況下,包括'fun'的定義,可能更多關於你的數據的信息,因爲你正在討論在這個操作中需要處理至少三個其他變量,等等。 – duckmayr

回答

0

正如@duckmayr解釋,你不需要通過x列進行迭代。這是一個創建新變量的例子。

df <- read.table(text = "    x freq 
1 PRODUCT10000 6 
2 PRODUCT10001 20 
3 PRODUCT10002 11 
4 PRODUCT10003 4 
5 PRODUCT10004 1 
6 PRODUCT10005 2", header = TRUE) 
fun <- function(string){paste0(string, "X")} # example 
# option 1 
df$new.col1 <- fun(df$x) # see duckmayr's comment 
# option 2 
library(data.table) 
setDT(df)[, new.col2 := fun(x)] 
+0

請參閱我對@duckmayr的迴應評論 – zsad512

+0

另請參閱我的編輯 – zsad512