我需要在data.frame上使用apply()
函数,该数据框具有不同数据类型的列。
apply(X, MARGIN, FUN, ...)
的文档说:
如果X不是数组而是具有非空昏暗值的类的对象(例如数据框),则应用尝试通过as.matrix将其强制转换为数组(如果它是二维的)(例如,数据框)或通过as.array。
在我的示例中,数字列被转换为字符串,但我想避免在基函数中调用as.numeric()
。有没有其他替代方法可以避免强制进入阵列? (例如,强制列表)
示例代码:
df <- data.frame(name = "A", number = 1.0)
echo <- function(row) {
data.frame(
name = row["name"],
number = row["number"],
stringsAsFactors = FALSE
)
}
copy <- apply(X = df, MARGIN = 1, FUN = echo)
class(copy[[1]]$number)
[1] "character"