小编eol*_*old的帖子

如何在没有强制的情况下将列表展平到列表?

我试图实现类似于unlist的功能,但类型不会被强制转换为向量,但会返回包含保留类型的列表.例如:

flatten(list(NA, list("TRUE", list(FALSE), 0L))
Run Code Online (Sandbox Code Playgroud)

应该回来

list(NA, "TRUE", FALSE, 0L)
Run Code Online (Sandbox Code Playgroud)

代替

c(NA, "TRUE", "FALSE", "0")
Run Code Online (Sandbox Code Playgroud)

将由...返回unlist(list(list(NA, list("TRUE", list(FALSE), 0L)).

从上面的例子中可以看出,扁平化应该是递归的.标准R库中是否有一个功能可以实现这一功能,或者至少还有一些其他功能可用于轻松有效地实现这一功能?

更新:我不知道从上面是否清楚,但非名单不应该被夷为平地,即flatten(list(1:3, list(4, 5)))应该返回list(c(1, 2, 3), 4, 5).

r list standard-library flatten type-coercion

49
推荐指数
4
解决办法
6128
查看次数

如何在每个矩阵元素的索引上应用函数

我想知道在R中是否有内置函数将函数应用于矩阵的每个元素(当然,函数应该基于矩阵索引计算).等效的是这样的:

matrix_apply <- function(m, f) {
  m2 <- m
  for (r in seq(nrow(m2)))
    for (c in seq(ncol(m2)))
      m2[[r, c]] <- f(r, c)
  return(m2)
}
Run Code Online (Sandbox Code Playgroud)

如果没有这样的内置函数,那么初始化矩阵以包含通过计算具有矩阵索引作为参数的任意函数获得的值的最佳方法是什么?

dictionary r function matrix apply

48
推荐指数
4
解决办法
6万
查看次数

Java 6:不支持的@SuppressWarnings("rawtypes")警告

我转移到一台新机器,它有最新的Sun Java编译器,并注意到现有Java 6代码中的一些警告.Eclipse IDE,建议我使用以下命令注释赋值:

@SuppressWarnings("rawtypes")
Run Code Online (Sandbox Code Playgroud)

例如:

class Foo<T> {
...
}
...
@SuppressWarnings("rawtypes")
Foo foo = new Foo();
Run Code Online (Sandbox Code Playgroud)

当我使用较旧的编译器(JDK 1.6.0_20)回到机器时,我注意到这个较旧的编译器现在警告抑制"rawtypes"警告,声称这种抑制不受支持并建议用@SuppressWarnings替换它( "未登记").此外,有些地方默认情况下,最新的编译器让我把"unchecked"和"rawtypes"都放在一起 - 用旧编译器编译代码再现相同的警告.

如何强制两者之间的向后/向前兼容性,以便编译器都不会产生警告?

java compiler-construction warnings raw-types suppress-warnings

41
推荐指数
1
解决办法
4万
查看次数

如何从指向多态基类的指针复制/创建派生类实例?

我很长一段时间一直在努力解决这类问题,所以我决定在这里问一下.

class Base {
  virtual ~Base();
};
class Derived1 : public Base { ... };
class Derived2 : public Base { ... };
...

// Copies the instance of derived class pointed by the *base pointer
Base* CreateCopy(Base* base);
Run Code Online (Sandbox Code Playgroud)

该方法应返回动态创建的副本,或者至少将对象存储在某些数据结构中的堆栈上以避免"返回临时地址"问题.

实现上述方法的天真方法是在一系列if语句中使用多个typeids或dynamic_casts来检查每个可能的派生类型,然后使用new运算符.还有其他更好的方法吗?

PS:我知道,使用智能指针可以避免这个问题,但我对简约方法感兴趣,没有一堆库.

c++ polymorphism copy class instance

26
推荐指数
1
解决办法
1万
查看次数

Javadoc使用@value在内部类常量上显示值

我有一个内部类,它声明一个常量,并希望使用@value注释在封闭的顶级类的Javadoc中显示它的值.例如:

/**
 * {@value #FOO_CONS} // this displays well
 * {@value #BAR_CONS} // this does not work (checked in the latest Eclipse)
 * {@value Bar#BAR_CONS} // this does not work, either
 */
public Foo {
  public static final int FOO_CONS = 1;
  static class Bar {
    public static final int BAR_CONS = 42;
  }
}
Run Code Online (Sandbox Code Playgroud)

任何想法如何在Foo类(或任何其他类,一般)的Javadoc中显示BAR_CONS的值?

java annotations javadoc constants

26
推荐指数
2
解决办法
2万
查看次数

如何在pkg-config中使用C++ Boost库?

我成功地将最新版本的Boost库编译并安装到我的linux机器上.现在,我希望能够使用pkg-config来简化提供链接参数和GCC的过程.

由于我懒得手工编写我自己的.pc文件,是否有一个脚本/工具可以自动生成所需的.pc文件,或者以其他方式使用boost标志更新pkg-config?

(如果有人已经拥有该.pc文件,也欢迎分享.)

c++ unix linux boost pkg-config

19
推荐指数
2
解决办法
1万
查看次数

HIbernate实体管理器:如何缓存查询?

我使用Hibernate 3.5.1和EntityManager进行数据持久化(使用JPA 2.0和EHCache 1.5).我可以通过以下代码获取查询:

EntityManager em;
...
Query query = em.createQuery(...);
...
Run Code Online (Sandbox Code Playgroud)

现在,问题是EntityManager的createQuery()方法返回javax.persistence.Query,与org.hibernate.Query(由SessionFactory的createQuery()方法返回)不同,它没有org.hibernate.Query.setCacheable()方法.

那么,我应该如何使用EntityManager(或Hibernate的其他部分)缓存查询?

java caching hibernate jpa-2.0

13
推荐指数
1
解决办法
1万
查看次数

成员函数重载决议涉及"使用"别名的英特尔C++编译器错误?

#include <cstddef>

template<typename T, T... Is>
struct Bar { };

template<size_t... Is>
using Baz = Bar<size_t, Is...>;

struct Foo {
  template<size_t... Is>
  void NoAlias(Bar<size_t, Is...>) { }

  template<size_t... Is>
  void Alias(Baz<Is...>) { }
};

template<typename T, T... Is>
void foo(Bar<T, Is...>) { }

template<size_t... Is>
void bar(Bar<size_t, Is...>) { }

int main() {
  // All these work fine
  foo(Bar<size_t, 4, 2>());
  foo(Baz<4, 2>());
  bar(Bar<size_t, 4, 2>());
  bar(Baz<4, 2>());
  Foo().NoAlias(Bar<size_t, 4, 2>());
  Foo().NoAlias(Baz<4, 2>());

  // But these two give error on …
Run Code Online (Sandbox Code Playgroud)

c++ icc compiler-bug c++11

13
推荐指数
1
解决办法
436
查看次数

UNIX/BASH:列出在特定月份修改的文件

我正在努力处理在特定月份(例如,2月)修改的列表文件.以下是几次不成功的尝试:

1)我尝试创建临时文件并在下个月第一次设置时间戳,并在目标月份中第一次设置并在find中使用-newer,如下所示:

find -newer "$from" ! -newer "$to"
Run Code Online (Sandbox Code Playgroud)

这列出了在时间间隔($ from,$ to)中修改的文件,但我希望时间间隔[$ from,$ to)(否则,在下个月的第一秒创建的文件会出现误报) .2月修改的列表文件是额外的问题,因为这需要将其中一个时间戳设置为仍然在2月份的最大时间戳,但是2月份的天数取决于它是否是闰年,这需要额外的检查.

2)如果我使用,ls我在解析时会看到很多复杂因素,因为用户名或组可能包含空格.

有没有一种简单的方法和相对便携的方式(所以它适用于任何月份,无论文件名等)?

unix bash timestamp file list

12
推荐指数
1
解决办法
2万
查看次数

将两个或多个数组传递给Perl子例程

我在子程序中传递和读取参数时遇到问题,该子程序预计会有两个数组.

sub two_array_sum { # two_array_sum ( (1 2 3 4), (2, 4, 0, 1) ) -> (3, 6, 3, 5)
  # I would like to use parameters @a and @b as simply as possible
}

# I would like to call two_array_sum here and pass two arrays, @c and @d
Run Code Online (Sandbox Code Playgroud)

我已经看过并尝试过网上的几个例子,但它们都没有为我工作.

arrays perl parameter-passing subroutine

12
推荐指数
3
解决办法
2万
查看次数