【发布时间】:2017-12-09 06:01:13
【问题描述】:
我正在尝试根据要更改的列向量来修改数据集中的数据。这样我就可以根据配置文件分解处理,该文件将列列表作为变量更改。
理想情况下,我希望能够像这样使用 ddply:
column <- "var2"
df <- ddply(df, .(), transform, column = func(column))
输出将是相同的数据帧,但在“B”列中,每个字母后面都会添加一个“A”
这将通过 func 元素更改列 var2 的每个元素(此处的 func 用于以特定方式修剪 chr)。我尝试了几种解决方案,例如:
df[do.call(func, df[,column]), ]
不接受 df[,column] 作为参数(不是列表),或者
param = c("var1", "var2")
for(p in param){
df <- df[func(df[,p]),]
}
破坏其他数据,或
df[, column] <- lapply(df[, column], func)
这不起作用,因为它将整个列作为参数,而不是逐个更改每个元素。我有点不知道如何使这种处理更加自动化。
例子:
df <- data.frame(A=1:10, B=letters[2:11])
colname <- "B"
addA <- function(text) { paste0(text, "A") }
我想做这样的事情:
df <- ddply(df, .(), transform, colname = addA(colname))
虽然如果解决方案不使用ddply,那也不是问题,这正是我最习惯的
【问题讨论】:
-
df[,column] <- do.call(func, list(df[,column]))能得到你想要的结果吗? -
这种情况下的问题是该列的所有元素最终都相同,而不是每个都来自“它的”行
-
你能在你的问题中添加一个最小的例子吗?这将包括您要使用的函数和数据集(或使用内置数据集)和所需的输出。
-
@aosmith : 加了个例子,希望够清楚