R apply()字符类型上的奇数行为

R apply()字符类型上的奇数行为,r,apply,R,Apply,假设我有一个数据框data,带有数字列col is_class <- function(x){ return(class(x['col'])) } data['class'] <- apply(data, 1, is_class) 返回 1. apply(data, 1, times_two) 2. FUN(newX[, i], ...) 啊,是的,这似乎是合理的。如果你包含一个简单的示例输入和所需的输出,可以用来测试和验证可能的解决方案,那么帮助你会更容易。你想要实现什

假设我有一个数据框
data
,带有数字列
col

is_class <- function(x){
    return(class(x['col']))
}
data['class'] <- apply(data, 1, is_class)
返回

1. apply(data, 1, times_two)
2. FUN(newX[, i], ...)

啊,是的,这似乎是合理的。如果你包含一个简单的示例输入和所需的输出,可以用来测试和验证可能的解决方案,那么帮助你会更容易。你想要实现什么?要获取特定列的类,只需
class(data[[“columnName”]])
就足够了。如果您想知道每列的类,只需尝试
lappy(data,class)
。另外,您不应该在
data.frame
s上使用
apply
。显然,我要执行的数值操作比
*2
更复杂,它包含
if
语句等@joran,它确实包含各种数据类型,我可以看到
apply()
将每一行转换为“character”类型的原子向量。有办法解决这个问题吗?目前,我必须在函数中对每个变量执行
col=as.numeric(x['col'])
times_two <- function(x){
    return(x['col']*2)
}
data['col2'] <- apply(data, 1, times_two)

Error in x["col"] * 2: non-numeric argument to binary operator
Traceback:
1. apply(data, 1, times_two)
2. FUN(newX[, i], ...)