R:如何在data.frame的行上使用apply并从$column\u name中取出?
我尝试使用以下示例访问$a:R:如何在data.frame的行上使用apply并从$column\u name中取出?,r,dataframe,R,Dataframe,我尝试使用以下示例访问$a: df<-data.frame(a=c("x","x","y","y"),b=c(1,2,3,4)) > df a b 1 x 1 2 x 2 3 y 3 4 y 4 test_fun <- function (data.frame_in) { print (data.frame_in[1]) } 但我无法使用$符号访问列$a:错误:“$运算符对原子向量无效” 测试乐趣2适用(df,1,测试乐趣2) 数据错误。$a:$运算符
df<-data.frame(a=c("x","x","y","y"),b=c(1,2,3,4))
> df
a b
1 x 1
2 x 2
3 y 3
4 y 4
test_fun <- function (data.frame_in) {
print (data.frame_in[1])
}
但我无法使用$符号访问列$a:错误:“$运算符对原子向量无效”
测试乐趣2适用(df,1,测试乐趣2)
数据错误。$a:$运算符中的帧_对原子向量无效
这不可能吗?因为
apply
更改了函数中的数据类型:
> apply(df, 1, class)
[1] "character" "character" "character" "character"
> apply(df, 1, colnames)
NULL
由于没有列名,因此不能使用$
运算符引用值
从应用文档中:
如果X不是数组,但具有
维度属性,应用尝试
通过as.matrix if将其强制为数组
它是二维的(例如,数据
帧)或通过as.array
因为
中的data.frame.in不是data.frame:
apply(df, 1, function(v){print(class(v))})
但您可以通过以下方式访问命名元素:
test_fun_2 <- function (data.frame_in) {
+ print (data.frame_in['a'])}
test\u fun\u 2您可以使用plyr软件包中的adply
:
library(plyr)
adply(df, 1, function (data.frame_in) print(data.frame_in$a))
没有关于如何缓解这个问题的建议?很好。我花了相当长的时间寻找关于“如何在dataframe上使用apply”的问题,以及最终只能解决手头特定问题的变通方法。这一个不仅回答了我看到的所有问题,还解决了我的问题!
test_fun_2 <- function (data.frame_in) {
+ print (data.frame_in['a'])}
library(plyr)
adply(df, 1, function (data.frame_in) print(data.frame_in$a))