R:如何在data.frame的行上使用apply并从$column\u name中取出?

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:$运算符

我尝试使用以下示例访问$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))